...collaborate on

Search: \.*

Education/ProgramacaoImperativa Web Changed Changed by
Comunicado_F1 30 Mar 2005 - 20:20 - NEW JoseCarlosRamalho
++ COMUNICADO

Caros colegas e alunos, depois dos acontecimentos ocorridos no dia de hoje e que foram as entregas e defesas da fase 1 do Projecto Integrado achei que devia redigir este comunicado para, pelo menos, todos reflectirmos um pouco sobre o que aconteceu.

Antes de mais, queria aqui deixar expressos os meus parabéns a todos os alunos que, com mais ou menos dificuldades, realizaram um trabalho honesto e compareceram como acordado para fazerem a respectiva defesa.

Foi com grande consternação e tristeza que ao fazer o balanço no fim do dia, a equipe docente constatou que cerca de 50% dos trabalhos apresentados incluíam fraudes a vários níveis. Muitos de vocês foram afectados pos esta situação e no fim fiquei com a sensação de que não perceberam inteiramente o que tinham feito o que motivou esta minha reflexão. Não percebem que:

  • copiar um trabalho é o mesmo que roubar, é como entrar num gabinete com a porta aberta e retirar de lá o que entenderem?
  • ao copiar um trabalho estão a desvalorizar o vosso trabalho?
  • ao copiar um trabalho estão a enganar-se a vocês próprios pois não aprendem?
  • ao copiar estão a enganar o docente que tem estado empenhado em ensinar-vos e em preparar-vos para o que será o resto da vossa vida?
  • um dia podem não ter nada nem ninguém por onde copiar? E aí? Como irão fazer se a vossa cabeça não está preparada para pensar per si?
  • se quiserem viver num país honesto onde as pessoas sejam verdadeiras isso pode começar por cada um de vocês? Que exemplos dão aos outros ao vosso lado ou que ainda caminham atrás de vós?

Pensem nestas questões que aqui deixo e que se estamos a actuar como actuámos é porque acreditamos que vocês podem ser muito melhores do que mostraram hoje.

Eu acredito. Vocês acreditam? Ainda temos um caminho a percorrer juntos...

José Carlos Ramalho

PS: Atendendo à dimensão do problema a equipe docente emitirá, amanhã às 12.00h, um comunicado onde ficará estabelecido em definitivo como será o procedimento relativamente às situações fraudulentas detectadas hoje (isto só será feito por serem alunos do 1º ano).

-- JoseCarlosRamalho - 30 Mar 2005

Fase1Aval 31 Mar 2005 - 12:54 - NEW JoseCarlosRamalho
COMUNICADO

Neste momento, está a ser preparado um documento que será subscrito por todos os docentes envolvidos e que faz uma análise ao que aconteceu ontem e que justifica as medidas que serão tomadas e que se descrevem a seguir (as que estão relacionadas com PI).

Assim, foi estipulado o seguinte:

  1. As fases do trabalho terão pesos diferentes sendo que a primeira vale 20%, a segunda 40% e a terceira também 40% da nota prática final.
  2. Excepcionalmente, e porque estamos perante uma turma do 1º ano, os alunos apanhados em atitudes fraudulentas será contabilizado um 0 na primeira fase (na pauta aparecerá FRAUDE), podendo continuar a trabalhar para a disciplina entregando as fases seguintes.

-- JoseCarlosRamalho - 31 Mar 2005

Ficha1 24 Feb 2005 - 15:46 - r2 JoseCarlosRamalho
++ Funcionamento das aulas Teórico-Práticas e Práticas

As aulas teórico-práticas da diciplina Programação Imperativa são baseadas na realização de uma ficha teórico-prática por semana, previamente disponível aqui neste site.

Na aula teórico-prática semanal, a ficha será abordada sob o ponto de vista algorítmico. Espera-se que o aluno pense no problema e especifique uma possível solução. Na aula prática, os alunos deverão desenvolver os seus algoritmos em C e colocá-los a funcionar no computador. No fim, cada grupo deverá submeter ao sistema de submissões electrónico a ficha com as suas resoluções.

++ Ambiente de Programação em C

Para a resolução dos programas apresentados nas fichas de Programação Imperativa, aconselham-se todos os alunos a criar um ambiente de trabalho no computador que permita editar, compilar e executar os programas C, bem como preparar a documentação associada aos programas desenvolvidos.

+++ Comentários em C

Diga quais as formas permitidas para misturar comentários com o texto dos programas, na linguagem C.

+++ Primeiro programa C - "Hello world!"

Desenvolva um programa C que escreve a string "O meu primeiro programa" no écran do computador.

+++ Compilação separada em C

Verifique o que faz cada uma das seguintes opções do gcc:

  • gcc -E
  • gcc -S
  • gcc -c
  • gcc -o ou só gcc

+++ Soma de 2 números inteiros

Escreva um novo programa C, que soma dois números inteiros, previamente declarados e inicializados respectivamente com 7 e 9, e escreve o resultado da soma.

+++ Utilização do gcc Escreva os comandos para realizar as acções seguintes:

  • Comandos para compilar os programas C (sem gerar o
executável).
  • Comandos para gerar um executável: soma.exe

++ Makefiles

Analise a seguinte Makefile:

soma: soma.c
    gcc -o soma.exe soma.c

ppp: soma.c
    gcc -E soma.c

asm: soma.c
    gcc -S soma.c

+++ Utilização de makefiles

Considerando a Makefile apresentada, e que a mesma está guardada no arquivo Makefile, execute os seguintes comandos:

  • Comando para gerar o executável.
  • Comando para correr apenas o pré-processador.
  • Comando para gerar o código Assembley.

+++ Tratamento de excepções em makefiles

Estude o funcionamento do comando make, e diga:

  • Qual a diferença entre os comandos:
limpa:
    rm *.log *.dvi *.aux

limpa:
    -rm *.log *.dvi *.aux

++ LaTeX?

+++ Um pequeno relatório

Com a ajuda do professor, elabore em LaTeX? , um pequeno relatório do trabalho realizado nesta ficha. Para tal edite o ficheiro TeX? desta ficha, acrescentando as soluções que desenvolveu na aula. No fim, gere um documento em PDF.

-- JoseCarlosRamalho - 24 Feb 2005

Ficha2 03 Mar 2005 - 11:27 - r2 JoseCarlosRamalho

Ficha Nº2

Objectivos:

O objectivo principal desta ficha é familiarizar o aluno com a linguagem algorítmica que irá ser usada para especificar os algoritmos e com as estruturas de controlo da linguagem C.

Para atingir esse fim, o aluno irá desenvolver pequenos algoritmos e tentar codificá-los em C.

Exercícios:

Exercício Nº1: O Maior de 2 Números

Desenvolva o algoritmo, e posteriormente codifique-o em C, de um programa que lê dois inteiros e escreve o maior deles.

Exercício Nº2: O Maior de N Números

Desenvolva o algoritmo, e posteriormente codifique-o em C, de um programa que lê N inteiros e escreve o maior deles.

Exercício Nº3: Números Pares

Desenvolva o algoritmo, e posteriormente codifique-o em C, de um programa que lê um determinado número inteiro N e escreve os números pares até N.

Exercício Nº4: Potências

Desenvolva o algoritmo, e posteriormente codifique-o em C, de um programa que lê 2 números inteiros, a e b, e escreve o resultado de elevar a à potência de b (utilize estruturas cíclicas para calcular o valor da potência).

Exercício Nº5: Factorial

Desenvolva o algoritmo, e posteriormente codifique-o em C, de um programa que lê um inteiro positivo e escreve o valor do seu factorial.

Exercício Nº6: Tabela de Conversão de Temperaturas

Considere a seguinte fórmula:Fahreneit = 32 + (1.8 * Celsius)

Desenvolva o algoritmo, e posteriormente codifique-o em C, de um programa que calcula uma tabela de conversão entre graus Celsius e graus Fahreneit com Fahreneit a variar entre 0 e 300 (considere intervalos de 5 graus).

-- JoseCarlosRamalho - 28 Feb 2005

Ficha3 13 Mar 2005 - 10:45 - r2 JoseCarlosRamalho

Ficha Nº3

Objectivos:

O objectivo principal desta ficha é familiarizar o aluno com a codificação de algoritmos um pouco mais complexos alguns deles envolvendo manipulação de strings. Outro dos objectivos, é a integração com a disciplina de Arquitectura de Computadores, pelo que no fim da ficha aparece um conjunto de problemas sobre conversão de representações numéricas.

Para atingir esse fim, o aluno irá desenvolver pequenos algoritmos e tentar codificá-los em C.

Nota: os exercícios 2, 3, 4 e 9 são de resolução opcional. Na ficha a submeter ao sistema só são obrigatórios os restantes.

Exercícios:

[Exercício1] [Exercício2] [Exercício3] [Exercício4] [Exercício5] [Exercício6] [Exercício7] [Exercício8] [Exercício9]


Exercício Nº1: Divisores de um número

Desenvolva o algoritmo, e posteriormente codifique-o em C, de um programa que lê um inteiros e escreve no écran os seus divisores.


Exercício Nº2: Maior Divisor Comum

Desenvolva o algoritmo, e posteriormente codifique-o em C como uma função. A sua função deverá ter dois argumentos inteiros e produzir um resultado inteiro que é o maior divisor comum dos argumentos recebidos. Posteriormente codifique um programa principal (main()) que utiliza esta função para cálculo do maior divisor comum de dois números fornecidos pelo utilizador.

Ver Algorítmo de Euclides

Que pode ser resumido em:

mdc(m,n) -->
             m>=n : m%n==0 --> n
                    m%n!=0 --> mdc(n,m%n)

             m<n  : mdc(n,m)


Exercício Nº3: Menor Múltiplo Comum

Desenvolva o algoritmo, e posteriormente codifique-o em C como uma função. A sua função deverá ter dois argumentos inteiros e produzir um resultado inteiro que é o menor múltiplo comum dos argumentos recebidos. Posteriormente codifique um programa principal (main()) que utiliza esta função para cálculo do menor múltiplo comum de dois números fornecidos pelo utilizador.


Exercício Nº4: É Primo?

Desenvolva o algoritmo, e posteriormente codifique-o em C como uma função. A sua função deverá ter um argumento inteiros e produzir um resultado do tipo booleano (o docente irá desenvolver uma pequena biblioteca de booleanos: bool.h). O resultado será verdadeiro (TRUE) se o argumento passado fôr primo e falso (FALSE) caso contrário. Posteriormente codifique um programa principal (main()) que utiliza esta função para verificar quem é primo numa sequência de inteiros introduzidos pelo utilizador (terminada por 0).


Exercício Nº5: Tudo ao contrário!

Foste transferido para uma nova escola.

Nessa escola, a professora e matemática gostava muito de pôr os alunos a pensar e tentava que a mais simples tarefa fosse algo em que o raciocínio tivesse que intervir.

Uma das medidas que ela implementou foi a de utilizar os números inteiros invertidos. Por exemplo, o 12 seria 21 e o 1821 seria 1281.

Ora, os alunos locais já estão habituados a lidar com os inteiros daquela maneira e até fazem as operações de adição e subtracção com os inteiros naquela forma. No entanto, para ti, que acabaste de chegar à escola esta tarefa não é tão simples. Assim, resolveste criar um programa em computador que fizesse três coisas:

  1. dado um número calcula o seu inverso (o valor inteiro correcto)
  2. dados dois números na forma invertida calcula a sua soma e devolve o resultado na mesma forma invertida
  3. dados dois números na forma invertida calcula a sua subtracção e devolve o resultado na mesma forma invertida

Sugestão: especifica uma função para cada um dos pontos acima.


Exercício Nº6: Sequência de Fibonacci

Codifica um programa que gere os primeiros 20 números de Fibonacci. Os números de Fibonacci são definidos recursivamente da seguinte forma:

   fib(0) = 1
   fib(1) = 1
   fib(n) = fib(n-1) + fib(n-2)   para n>=2

Exercício Nº7: Conversão decimal-binário

Depois de estudares o algoritmo das divisões sucessivas para a conversão de números decimais em números binários, desenvolvido na aula teórico-prática, codifica-o num programa em C.

Exercício Nº8: Conversão binário-decimal

Depois de teres resolvido o problema anterior, tenta resolver o problema inverso. Nota que os números binários são representados numa string com os carácteres 0 e 1.

Exercício Nº9: Conversão binário-hexadecimal

Pensa agora com converter um número binário em hexadecimal. Cria um programa em C para realizar esta tarefa.

-- JoseCarlosRamalho - 07 Mar 2005

Ficha4 20 Mar 2005 - 21:12 - r2 JoseCarlosRamalho

Ficha Nº4

Objectivos:

O objectivo principal desta ficha é familiarizar o aluno com a utilização e manipulação de vectores e matrizes em C. As strings são casos particulares de arrays: uma string é um array em que os elementos são todos do tipo char. Assim, nesta ficha surgem também alguns exercícios envolvendo manipulação de strings.

Exercícios:

Média de 10 números; Capicua; Romano-Árabe; Cifra; Estatísticas;

Exercício Nº1: Média de 10 números inteiros

Especifique um programa e codifique-o em C que lê 10 números inteiros positivos de um ficheiro externo (considere que cada linha do ficheiro contem apenas um número) e escreve:

  • a sua média e o valor máximo;
  • os numeros maiores que a média;
  • a quantidade de números menores que a média;

Depois de ter realizado as tarefas anteriores faça o programa produzir os resultados num ficheiro de nome relatorio.txt.

Exercício Nº2: Capicua

Especifique uma função que recebe uma string e verifica se a mesma é capicua (lida da esquerda para a direita, ou da direita para a esquerda, é a mesma palavra/frase).
Exemplos típicos: ala ou rapar.
Um caso curioso (e, claro, mais complexo) é a seguinte Capicua brasileira: Socorram-me subi no onibus em Marrocos.

Exercício Nº3: Conversão Romano-Árabe

Especifique uma função que recebe uma string contendo um número escrito em notação romana e que dá como resultado o respectivo valor inteiro (correspondente à notação arábica).

Exercício Nº4: Cifra por substituição arbitrária

Considere a cifra (palavra-chave) constituída pelas letras "SAPO" seguidas de um dígito n (entre 0 e 9). Para a cifragem (codificação) da mensagem efectuam-se os seguintes passos:

  1. reduzem-se espaços seguidos a um único espaço e mantém-se os caracteres de pontuação;
  2. os digitos rodam-se (circularmente) para a direita da quantidade n;
  3. convertem-se todas as letras em maiúsculas ou minúsculas;
  4. considera-se a seguinte tabela de codificação:

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
S A P O B C D E F G H I J K L M N Q R T U V W X Y Z

A construção desta tabela limita-se a colocar a palavra chave no início e completar com as restantes letras do alfabeto, não colocando as letras que se repetem.

  1. para a codificação, substitui-se cada um dos carácteres da primeira linha pelo carácter correspondente da segunda linha.

Construa um programa que dada uma cifra, codifique a mensagem, e um outro que, dada a mensagem cifrada e a cifra, descodifique a mensagem.

Exercício Nº5: Estatísticas de texto

Crie um programa que leia todos os caracteres de um texto (até encontrar um o fimde ficheiro, eof) e que no fim indique quantas vezes apareceu cada uma das 26 letras do alfabeto (considere maiúsculas iguais às minúsculas).

-- JoseCarlosRamalho - 13 Mar 2005

Ficha5 29 Apr 2005 - 08:56 - r6 PedroRangelHenriques

Ficha Nº5

Objectivos:

O objectivo principal desta ficha é consolidar os conhecimentos sobre manipulação de arrays em C expandindo para a manipulação de arrays multidimensionais, noemadamente as matrizes.

Exercícios:

Exercício Nº1: Gestão de Armazens

Uma empresa tem 10 armazens e precisa de um programa que leia as vendas mensais dos 10 armazens, calcule a media de vendas e produza uma listagem dos armazens com vendas superiores à média calculada.

Exercício Nº2: Contem ou Contido

Desenvolva um algoritmo e posteriormente codifique-o em C que dadas dumas matrizes de dimensões arbitrárias verifica se a primeira contem a segunda (considere que os valores armazenados nas matrizes são do tipo inteiro).

Exercício Nº3: Média dos Alunos

Cada aluno de uma licenciatura em Ciências da Computação pode ter notas correspondentes a 10 disciplinas feitas durante o ano lectivo (caso não tenha sido avaliado positivamente a uma disciplina não terá essa nota).

  1. Declare as estruturas de dados (o modelo) necessárias para suportar o sistema de informação: um aluno tem um número (inteiro sequencial a partir de 1), um nome (string) e uma lista de notas (reais). Pense na hipótese de encarar o número do aluno como um código alfanumérico (para permitir números em qualquer escala, ou mesmo o uso de letras) e identifique as alterações daí decorrentes.
  2. Inicialize a estrutura de dados: na declaração e/ou numa função de inicialização que é chamada no início da função main().
  3. Crie as funções normais de manipulação de uma pequena base de dados:
    1. Inserir - de modo a manter a informação por ordem alfabética de nome. Numa 1ª versão, utilize o algoritmo por trocas directas e, numa 2ª versão, use a inserção ordenada;
    2. Remover - utilize a pesquisa sequencial ordenada para encontrar o registo a remover;
    3. Consultar - utilize a pesquisa dicotómica para encontrar o registo a consultar;
    4. Listar - liste todos os alunos armazenados, por ordem alfabética.
  4. Especifique uma função em C para calcular a média de cada aluno (faça uma função que dada a estrutura de dados principal e o identificador do aluno, produz como resultado a sua média); note que disciplinas não avaliadas não contam para a média (diferente de obter a classificação 0 numa disciplina).
  5. Calcule a média geral da turma.
  6. Calcule a média da turma em cada disciplina.
  7. Calcule a percentagem de faltas (ausência de nota).

-- PedroRangelHenriques - 29 de Abril, 2005

Ficha6 20 Mar 2005 - 21:08 - NEW JoseCarlosRamalho

Ficha Nº6: Busca e Ordenação de Arrays

Objectivos:

O objectivo principal desta ficha é familiarizar o aluno com a utilização dos algoritmos tradicionais de busca e ordenação de Arrays.

Exercícios:

Exercício Nº1: Inserção Ordenada

Voltando ao exercício da última ficha em que se geriam alunos e respectivas notas, implemente a operação correspondente à inserção de um novo aluno (faça a inserção ordenada desse aluno). Este problema pode ser dividido em três fases:

  1. Descobrir a posição onde o novo aluno deverá ser inserido;
  2. Deslocar os elementos maiores uma posição para a frente;
  3. Inserir o novo aluno na posição livre.

Exercício Nº2: Remoção

Especifique a operação de remoção de um aluno tendo o cuidado de deixar a estrutura ordenada e sem "buracos".

Exercício Nº3: Busca Dicotómica

Uma vez que a estrutura está ordenada a pesquisa pode ser optimizada. Implemente a pesquisa dicotómica sobre um array ordenado.

-- JoseCarlosRamalho - 20 Mar 2005

Ficha7 29 Apr 2005 - 09:01 - r2 PedroRangelHenriques

Ficha Nº6: Arrays e Estruturas

Objectivos:

O objectivo principal desta ficha é familiarizar o aluno com a utilização de algoritmos mais avançados de busca e ordenação sobre Arrays. No fim, porpõem-se alguns exercícos envolvendo estruturas.

Exercícios:

Exercício Nº1: Estrutura Ligada

Voltando ao exercício da última ficha em que se geriam alunos e respectivas notas, considere a hipótese de utilizar uma ligação lógica entre os elementos como forma de os manter ordenados(como discutido na aula teórica de 01-04-2004) e implemente as seguintes funções:

  1. Incialização do modelo de dados: lembre-se que também será necessário gerir as posições livres.
  2. Listar: esta função produz uma listagem ordenada da informação de todos os alunos.
  3. Consulta: esta função imprime no écran toda a informação referente a um determinado aluno.
  4. Inserir: esta função insere o novo aluno na primeira posição livre e actualiza as ligações de forma a manter a informação logicamente ordenada.
  5. Remover: esta função remove o aluno em causa e coloca a respectiva posição na lista de posições livres (garbage collector).
Este problema pode ser dividido em três fases:

Exercício Nº2: Estrutura ou Produto Cartesiano

Considere de novo o problema do exercício anterior e resolva as seguintes alíneas:

  1. Defina um tipo de dados Aluno como sendo uma estrutura (struct) onde é guardada a informação do aluno.
  2. Defina um tipo de dados Turma como sendo uma lista de Aluno.
  3. Declare variáveis do tipo Aluno e do tipo Turma.
  4. Adapte as funções desenvolvidas no exercício anterior para trabalhar com estes novos tipos de dados.
Ficha8 29 Apr 2005 - 09:01 - r2 PedroRangelHenriques

Ficha Nº7: Estruturas de Dados Dinâmicas - Listas Ligadas

Objectivos:

O objectivo principal desta ficha é familiarizar o aluno com a utilização de estruturas de dados dinâmicas.

Exercícios:

Exercício Nº1: Lista de Inteiros

Considere uma lista de inteiros (não se sabe o seu comprimento). Especifique então as seguintes funções e estruturas de dados:

  1. Defina os tipos necessários para suportar uma lista ligada de inteiros.
  2. Especifique uma função para inserir um valor na cabeça da lista.
  3. Especifique uma função para listar os valores da lista, do início para o fim (faça também a função que lista os elementos na ordem inversa).
  4. Especifique uma função para procurar um valor na lista (como resultado deverá devolver um apontador para o elemento ou NULL caso não o encontre).
  5. Especifique uma função para contar os elementos da lista.
  6. Especifique uma função para calcular o maior elemento na lista.
  7. Especifique um programa, usando as funções definidas, que cria uma lista com os múltiplos de 3 entre 0 e 100 e os lista por ordem decrescente e crescente.

Exercício Nº2: À procura da saída ...

Suponha que existe um labirinto (pense numa representação adequada para o mesmo) que tem um ponto de entrada e um ponto de saída. Especifique um algoritmo que vai descobrir um caminho possível entre o ponto de entrada e o ponto de saída. Ajuda: modele numa lista ligada uma stack para ir guardando o caminho percorrido e as hipóteses alternativas.

Exercício Nº3: A Agenda de Contactos

Pretende-se que desenvolva uma aplicação para gerir uma agenda de contactos. Uma agenda é uma lista de entradas ou grupos de entradas. Uma entrada tem a seguinte constituição:

chave
chave única de identificação (não pode haver duas entradas com a mesma chave);
tipo
tipo da entrada: pessoa, empresa, ...
nome
nome da pessoa, empresa ou entidade;
email
contacto electrónco (é opcional)
telefone
número de telefone (obrigatório)

Um grupo pode ter entradas, referências a entradas já existentes na agenda (por chave) ou subgrupos (os grupos podem ter grupos aninhados infinitamente). O grupo tem, então, a seguinte constituição:

chave
chave única de identificação (não pode haver dois grupos com a mesma chave);
nome
nome do grupo; lista de itens: entradas e/ou grupos e/ou referências;

Por sua vez, a referência é apenas constituída pela chave da entrada ou grupo que referencia.

Desenvolva a aplicação nas seguintes etapas:

  1. Defina as estruturas de dados necessárias para suportar o sistema de informação;
  2. Espeifique as várias funções de inserção: inserir uma entrada na agenda, inserir um grupo na agenda, inserir uma entrada num grupo, ...
  3. Especifique uma função para listar o conteúdo da agenda.
  4. Especifique uma função para gravar o conteúdo da agenda num ficheiro.
  5. Especifique uma função para carregar o conteúdo da agenda de um ficheiro.
  6. Especifique as várias funções de remoção.

Divirta-se...

Ficha8Res 20 Mar 2005 - 21:23 - NEW JoseCarlosRamalho

Makefile

prog.exe : prog.o lista.o
    gcc -o prog.exe prog.o lista.o

prog.o : prog.c lista.h
    gcc -c prog.c

lista.o : lista.h lista.c
    gcc -c lista.c


lista.h

#ifndef _LISTA
#define _LISTA

typedef struct sInteiro
  {
    int valor;
    struct sInteiro * seg;
  } Nodo, *Lista;

Lista inserir( int v, Lista l );
void listar( Lista l );
void listar_inv( Lista l );
Lista procurar( int v, Lista l );
int conta_elems( Lista l );

#endif


lista.c

#include "lista.h"
#include <stdio.h>

Lista inserir( int v, Lista l )
{
  Lista novo;

  novo = (Lista) malloc(sizeof(Nodo));
  novo->valor = v;
  novo->seg = l;

  return novo;
}


void listar( Lista l )
{
  if(l)
  {
    printf("%d ",l->valor);
    listar(l->seg);
  }
}

Lista inserir_ord( int v, Lista l)
{
  Lista novo;


  if((!l) || (l->valor > v))
  {
    novo = (Lista) malloc(sizeof(Nodo));
    novo->valor = v;
    novo->seg = l;
    return novo;
  }
  else
  {
    l->seg = inserir_ord(v,l->seg);
    return l;
  }
}


prog.c

#include <stdio.h>
#include "lista.h"

int main()
{
  Lista li=NULL;
  int i=0;

  while ((i+=3) < 100)
    li = inserir(i,li);

  listar(li);

  return 0;
}
FichasPraticas 29 Apr 2005 - 09:00 - r10 PedroRangelHenriques
MenuTopics 21 Feb 2005 - 09:33 - NEW AlcinoCunha
NovasPI 27 Jul 2005 - 10:48 - r18 JoseCarlosRamalho
27-07-2005
Resultados Finais após a época de recurso
22-06-2005
As notas práticas são, a partir de agora, definitivas.
TPImagens 29 Mar 2005 - 20:44 - NEW JoseCarlosRamalho
TrabalhosPratico 20 May 2005 - 11:50 - r4 JoseCarlosRamalho

Projecto Integrado

Arquitecturas de Computadores (AC2005)
e
Programação Imperativa (PI2005)

Este documento descreve o único tema disponível para a realização do projecto integrado das disciplinas em epígrafe.

Os assuntos referentes à organização do trabalho e à realização, entrega e avaliação do projecto, são descritos em regulamento próprio.


Índice

  1. Objectivos de formação e resultados de aprendizagem
    1. Tema: Processamento de Imagem
      1. Formato de Imagem PNM
        1. PBM: Portable BitMap? Format
          1. PGM: Portable GrayMap? Format
            1. PPM: Portable PixMap? Format
            2. Primeira fase (Fase 1)
              1. Segunda fase (Fase 2)
                1. Terceira fase (Fase 3)
                  1. Pautas musicais
                    1. Músicas populares

                Objectivos de formação e resultados de aprendizagem

                [Voltar ao índice]

                Este projecto tem como objectivos principais a formação genérica e específica de estudantes em fundamentos de computação em áreas de informática afins e interligadas, a programação imperativa e a arquitectura de computadores.

                Os objectivos de formação genérica incluem: (i) a pesquisa, análise e selecção de informação, (ii) o treino de trabalho de grupo na resolução de problemas, (iii) o desenvolvimento da capacidade de análise e compreensão de textos em língua inglesa, e (iv) o desenvolvimento da capacidade de comunicação escrita e oral.

                Os objectivos de formação específica incluem: (i) a análise da especificação e do problema, (ii) o desenvolvimento de algoritmos e consequente programação numa linguagem imperativa, (iii) a execução e realização de testes de conformidade, (iv) a análise da execução desses programas numa dada arquitectura de computadores (IA-32), e (v) a aplicação de técnicas de optimização de algoritmos/programas/códigos, com vista a melhorar o desempenho.

                A avaliação dos resultados esperados de aprendizagem irão verificar se as/os estudantes conseguem demonstrar ter adquirido o seguinte conjunto de competências genéricas e específicas:

                • competências genéricas

                  • a capacidade de trabalho em grupo e respectiva comunicação efectiva e eficiente entre os elementos do grupo;
                  • a capacidade de comunicação escrita e oral na apresentação e discussão dos processos usados e resultados obtidos;
                  • a capacidade de utilização de utilitários genéricos de informática em ambiente Linux e de elaboração de documentos anotados

                • competências específicas de Programação Imperativa

                  • a capacidade de desenvolver algoritmos para resolver problemas, de forma criativa, criteriosa e crítica, e inserida/o num grupo de trabalho
                  • o conhecimento e a capacidade de codificar algoritmos e estruturas de dados segundo os princípios da programação estruturada
                  • a capacidade e aptidões práticas para gerar, executar e testar programas codificados em C, usando um conjunto adequado de utilitários (GNU)
                  • o conhecimento e as aptidões de desenvolver e aplicar testes de conformidade e de analisar situações de fronteira na execução de programas
                  • capacidade e aptidões na produção de documentação adequada à manutenção por terceiros dos programas desenvolvidos

                • competências específicas de Arquitectura de Computadores

                  • a capacidade de pesquisar, seleccionar, analisar e interpretar a informação necessária para completar a especificação inicial do projecto (em língua inglesa, e relacionada com formas de representação de informação) (Fase1);
                  • o conhecimento e a capacidade de identificar e descrever formas de representação binária de informação gráfica (Fase1);
                  • o conhecimento e a capacidade de identificar, compreender e caracterizar as técnicas de codificação de estruturas típicas de controlo e dos métodos de acesso e manipulação de dados estruturados, no processo de compilação de uma linguagem imperativa (gcc) (Fase2);
                  • a aptidão para efectuar a análise de código em assembly e utilizar ferramentas de baixo nível de depuração (gdb) de programas (Fase2);
                  • o conhecimento, a capacidade e a aptidão para a aplicação de técnicas de engenharia inversa a código binário (Fase2);
                  • o conhecimento e a capacidade de identificar e descrever métricas que caracterizem o desempenho da execução dos programas específicos deste trabalho (Fase 3);
                  • aptidões na aplicação de técnicas de análise de desempenho baseadas no profiling de aplicações (Fase 3);
                  • capacidades e aptidões para descrever, aplicar e avaliar técnicas de optimização de desempenho independentes e dependentes da máquina (Fase 3);

                Tema: Processamento de Imagem

                [Voltar ao índice]

                Todos os projectos têm um tema subjacente. O tema escolhido para esta instância lectiva foi o processamento de imagem.

                No contexto deste projecto, as imagens a processar estarão sempre no formato PNM (Portable aNyMap) que se descreve na secção seguinte.

                Formato de Imagem PNM

                [Voltar ao índice]

                O PNM é um formato de imagem muito simples, fácil de ler a partir de um ficheiro e também fácil de escrever para um ficheiro. Actualmente uma imagem PNM pode pertencer a uma de três famílias, abaixo explicadas: PBM, PGM e PPM. Cada família tem duas

                representações
                uma textual e uma compactada.

                Embora não seja um requisito da especificação PNM, existe a convenção de que a imagem deve ser armazenada de cima para baixo e da esquerda para a direita. Cada pixel da imagem é armazenado num byte, valor 0 = preto, valor 255 = branco. Os componentes de cor são armazenados na ordem habitual RGB ("red", "green" and "blue"), um valor para o nível de vermelho, um valor para o nível de verde e um valor para o nível de azul.

                PBM: Portable BitMap? Format

                [Voltar ao índice]

                Esta família corresponde a imagens contendo apenas duas cores, branco (1) e preto (0), normalmente designadas por bitmaps.

                A sua forma textual pode ser descrita da seguinte maneira:

                • qualquer linha iniciada pelo carácter # é um comentário; os comentários só poem aparecer nas linhas do cabeçalho, ou seja, antes dos valores dos pontos da imagem.
                • a primeira linha contem o identificador do tipo da imagem: P1

                • a segunda linha contem um par de valores que definem respectivamente o decimal correspondente ao número de colunas (largura da imagem em pixeis), por exemplo: 9, e o decimal correspondente ao número de linhas (altura da imagem em pixeis), por exemplo:

                • as linhas restantes contêm uma lista de valores decimais, em que cada valor corresponde a um pixel da imagem e estão organizadas de acordo com os valores definidos nas linhas anteriores. Com os exemplos dados nos itens anteriores teríamos 7 linhas cada uma com 9 valores separados por espaço (cada valor corresponde a um byte, 0-255, que no caso das imagens do tipo P1 apenas assume valores no intervalo [0,1])

                Um exemplo de uma imagem neste formato poderia ser:

                P1
                # PBM example 
                9 7
                 0 0 0 0 0 0 0 0 0 
                 0 1 1 1 1 0 0 1 0 
                 0 1 0 0 1 0 0 1 0 
                 0 1 1 1 1 0 0 1 0
                 0 1 0 0 0 0 0 1 0
                 0 1 0 0 0 0 0 1 0
                 0 0 0 0 0 0 0 0 0
                

                Se analisar um pouco a imagem que esta representa um banner com fundo preto e letras a branco. Neste caso, a imagem contem a string "PI". Note também que, para este caso do banner, a primeira linha, a última linha, a primeira e última colunas são pretas e que entre duas letras há duas colunas pretas de separação.

                A sua forma compactada resulta da constatação de que um byte é uma sequência de 8 0's e 1's. Assim, um byte pode guardar 8 pixeis da imagem. A única alteração ao formato é o identificador que passa a: P4.

                A seguir apresenta-se o exemplo anterior agora compactado:

                P4
                # PBM example 
                9 7
                0 0
                121 0
                73 0
                121 0
                65 0
                65 0
                0 0 
                

                Note que, apenas para efeitos de visualização, introduziram-se espaços entre os valores da forma compactada. Nas formas compactadas PNM, não há espaços de separação entre os valores. A informação é guardada em ficheiro em bytes sequenciais.

                PGM: Portable GrayMap? Format

                [Voltar ao índice]

                Esta família corresponde a imagens definidas com vários níveis de cinzento.

                A sua forma textual pode ser descrita da seguinte maneira:

                • qualquer linha iniciada pelo carácter # corresponde a um comentário e deverá ser ignorada.
                • a primeira linha contem o identificador do tipo da imagem: P2

                • a segunda linha contem um par de valores que definem respectivamente o decimal correspondente ao número de colunas (largura da imagem em pixeis), por exemplo: 9, e o decimal correspondente ao número de linhas (altura da imagem em pixeis), por exemplo:

                • a terceira linha contem o maior valor decimal que é possível encontrar para a definição de um pixel: [0,65536] (2 elevado a 16), vamos designá-lo por MAX. Normalmente, tenta-se que o intervalo seja [0,255] pois apenas nesta situação se pode falar em compactação e no formato P5. Se MAX estiver no intervalo [0,255] é utilizado apenas um byte por cada pixel da imagem. Caso contrário, MAX esteja no intervalo [256,65535], são utilizados dois bytes por cada pixel da imagem; o byte mais significativo aparece primeiro.
                • as linhas restantes contêm uma lista de valores decimais, em que cada valor corresponde a um pixel da imagem e estão organizadas de acordo com os valores definidos nas linhas anteriores. Com os exemplos dados nos itens anteriores teríamos 7 linhas cada uma com 9 valores separados por espaço (cada valor corresponde a um pixel: 0-MAX).
                • cada linha não deverá ter mais de 70 valores.
                • o valor 0 corresponde à cor preta e o valor MAX corresponde à cor branca.

                Um exemplo de uma imagem neste formato poderia ser:

                P2
                # PBM example 
                9 7
                15
                 0 0 0 0 0 0 0 0 0 
                 0 15 15 15 15 0 0 12 0 
                 0 15 0 0 15 0 0 12 0 
                 0 15 15 15 15 0 0 12 0
                 0 15 0 0 0 0 0 12 0
                 0 15 0 0 0 0 0 12 0
                 0 0 0 0 0 0 0 0 0
                

                Se analisar um pouco a imagem que esta representa um banner com fundo preto e letras a branco. Neste caso, a imagem contém a string "PI". Note também que, para este caso do banner, a primeira linha, a última linha, a primeira e última colunas são pretas e que entre duas letras há duas colunas pretas de separação.

                A sua forma compactada resulta da eliminação dos espaços nas linhas da imagem e apenas para o caso em que MAX está no intervalo [0,255]. A única alteração ao formato é o identificador que passa a: P5.

                PPM: Portable PixMap? Format

                [Voltar ao índice]

                Esta secção ficará em branco. Espera-se que os alunos "investiguem" e que a preencham um pouco à semelhança das outras.

                Nas secções seguintes descrevem-se as diferentes fases do projecto e referem-se os requisitos que serão avaliados. Cada requisito está devidamente identificado e poderá será avaliado apenas numa das disciplinas.

                Primeira fase (Fase 1)

                [Voltar ao índice]

                Nesta fase, pretende-se que as/os estudantes executem as seguintes tarefas:

                • pesquisar a Web para caracterizar sucintamente os formatos de imagem JPEG e GIF (avaliação exclusiva de AC), e para completar o enunciado na descrição do formato PPM;
                • procurar na Web produtos que, em ambiente Linux (preferencial) convertam ficheiros de imagem/gráficos em formato JPEG ou GIF para um dos formatos PNM (PBM, PGM ou PPM), e testar pelo menos um dos produtos que satisfaça os requisitos (avaliação exclusiva de AC)";
                • desenvolver um conjunto de algoritmos elementares para transformar imagens PNM; mais concretamente, seguindo a descrição feita na secção anterior pretende-se transformar imagens do tipo P2, P3, P5 e P6 em imagens do tipo P1 ou P4 (avaliação exclusiva de PI);
                • codificar os algoritmos propostos, documentando-os adequadamente (avaliação exclusiva de PI);
                • preparar um conjunto de ficheiros de entrada para teste, que permita validar, além de outras, as de condições limite (avaliação exclusiva de PI);
                • criar programas executáveis, usando o ambiente de desenvolvimento da GNU, e seleccionando o nível de optimização -O2 ;
                • integrar e testar o produto final (da Fase 1) usando comandos da shell para (i) leitura de um ficheiro JPEG ou GIF e sua conversão para PNM, (ii) leitura de um ficheiro PNM (P2, P3, P5 ou P6) e sua conversão para noutro ficheiro PNM (P1 ou P4) e (iii) visualização da imagem usando ImageMagick? (avaliação exclusiva de PI);
                • refinar o interface com o utilizador, construindo um menu de operações e permitindo mais que uma operação em cada sessão (avaliação exclusiva de PI);
                • apresentar os resultados destas tarefas num relatório redigido em LaTeX? ; a sua estrutura deverá conter, para além do título e lista de autores, um resumo (máx. 600 caracteres), uma introdução com caracterização do problema a resolver, uma breve exposição/relato dos aspectos relevantes de cada uma das fases/tarefas, as conclusões, uma lista da bibliografia pertinente para a resolução do trabalho, e, em anexo, uma listagem do código.

                A título de curiosidade, apresentam-se algumas das operações que se poderão oferecer ao utilizador (se tiver tempo utilize a sua imaginação para criar mais):

                1. Compactar P1 em P4
                2. Descompactar P4 em P1
                3. Binarizar P2 em P1
                4. Binarizar P3 em P1
                5. Descompactar e Binarizar P5 em P1
                6. Descompactar e Binarizar P6 em P1

                Segunda fase (Fase 2)

                [Voltar ao índice]

                Nesta fase, pretende-se que as/os estudantes executem as seguintes tarefas:

                1. Corrigir e/ou completar as tarefas solicitadas na 1ª fase e que não foram realizadas, ou foram-no de modo menos correcto ou adequado; estas incluem: (i) a produção de textos sobre JPEG/GIF/PPM, (ii) a selecção/teste de conversores JPEG/GIF para PNM (PBM, PGM ou PPM), (iii) o desenvolvimento dos algoritmos e respectiva codificação, teste e integração (com os comentários pertinentes) na transformação de imagens do tipo P2, P3, P5 e P6 em imagens do tipo P1 ou P4 , e (iv) a produção de um texto em LaTeX? para posterior integração no relatório da 2ª fase e respectiva compilação para PDF.
                2. Desenvolver um conjunto adicional de algoritmos para: (i) efectuar sobre imagens PNM as operações de rodar, negativo, média-vizinhos e binarização-adaptativa (opcional), em que a descrição destas operações se encontra a seguir; e (ii) procurar os objectos contidos numa imagem colorindo-os com cores diferentes, à medida que os encontra (esta operação é apenas para imagens P1 e o resultado deverá ser uma imagem P3), de acordo com as indicações dadas no fim. Do ponto de vista de interface com o utilizador, esta novas operações solicitadas devem ser integradas com as conversões iniciais no menu de opções da Fase 1, permitindo mais que uma operação em cada sessão (avaliação exclusiva de PI).
                3. Codificar os algoritmos propostos, comentando-os e documentando-os adequadamente (avaliação exclusiva de PI).
                4. Criar programas executáveis, usando o ambiente de desenvolvimento da GNU, e seleccionando o nível de optimização -O2.
                5. Preparar um conjunto de ficheiros de entrada para teste dos algoritmos/código das funções solicitadas, que permita validar, além de outras, as condições limite (avaliação exclusiva de PI).
                6. Analisar o código assembly produzido pelo gcc no processo de compilação (apenas) do código C de uma das funções pedidas (média-vizinhos, no formato P5), dedicando uma secção do relatório a esta análise, com a seguinte informação: (i) apresentação do código em assembly, claramente identificando o corpo da função e as componentes de arranque e término da função, e incluindo comentários no corpo da função semelhantes a código C; (ii) identificação dos registos e/ou células de memória onde foram alocadas as variáveis locais da função; (iii) apresentação da estrutura e conteúdo da stack frame no início da execução do corpo da função; algumas destas tarefas deverão também ser executadas durante a defesa do trabalho (avaliação exclusiva de AC).
                7. Efectuar o reverse engineering de uma função que converte uma imagem P5 noutra P5, modificada: dado o executável obter uma possível versão do código da função em C, estruturada de uma forma correcta e elegante (avaliação exclusiva de AC).
                8. Integrar e testar o produto final (da Fase 2) usando comandos da shell para (i) leitura de um ficheiro JPEG ou GIF e sua conversão para PNM, (ii) leitura de um ficheiro PNM e aplicação de uma das operações pedidas, gerando um outro ficheiro PNM e (iii) visualização da imagem usando ImageMagick? (avaliação exclusiva de PI).
                9. Apresentar os resultados destas tarefas num relatório redigido em LaTeX? (que terá de ser submetido já compilado para PDF, num ficheiro cujo nome contém a indicação de "Fase2" seguido da identificação do grupo (por ex., "Fase2-3.15")); a estrutura do relatório deverá ser idêntica à solicitada na Fase 1 ("conter, para além do título e lista de autores, um resumo (máx. 600 caracteres), uma introdução com caracterização do problema a resolver, uma breve exposição/relato dos aspectos relevantes de cada uma das fases/tarefas, as conclusões, uma lista da bibliografia pertinente para a resolução do trabalho, e, em anexo, uma listagem do código") e deverá incluir uma versão reformulada/corrigida/completa do relatório da Fase 1.
                10. Preparar uma apresentação oral do trabalho de grupo feito até à data, (sem slides!) que não deverá ocupar mais de 5 min do tempo de defesa do trabalho.

                Detalhe das operações de manipulação de imagem acima referidos (para PI):

                rodar()

                a imagem é rodada 90 graus para a direita.

                negativo()

                o valor dos pixeis da imagem é invertido de acordo com a fórmula: MAX - valor_corrente

                media-vizinhos(nvizinhos)

                cada pixel da imagem vai tomar um novo valor que será igual à média dos valores dos seus nvizinhos vizinhos, de acordo com a seguinte interpretação: nvizinhos=2 inclui os vizinhos da esquerda e direita; nvizinhos=4 inclui os vizinhos da esquerda, direita, cima e baixo; e nvizinhos=8 inclui os vizinhos anteriores e ainda os quatro das diagonais.

                bin-adapt()

                esta operação será opcional e consiste em criar uma nova versão das conversões para P1; em vez de se considerar o valor médio (Max/2) como o valor de threshold para a binarização, considere-se o valor médio da diferença entre o valor máximo e a média dos pixeis da imagem ((Max-Média)/2).

                Relativamente à procura de objectos em imagens a preto-e-branco e sua coloração, os objectos a procurar são pixeis contíguos (horizontal, vertical ou diagonalmente) com o mesmo valor, e podem ser pontos, linhas ou áreas; por exemplo, se se considerar uma imagem P1 com as letras "PI" em cima, o resultado seria uma P3 com o "P" a uma cor (azul, por exemplo) e o "I" a outra cor (vermelho, por exemplo).

                Terceira fase (Fase 3)

                [Voltar ao índice]

                Relativamente à componente de Programação Imperativa e tendo em atenção o estado em que os trabalhos se encontram, após a segunda avaliação, foi decidido que a terceira fase será opcional e só deverá ser realizada pelos grupos que cumpriram integralmente os requisitos até ao momento e que querem obter uma classificação num dos últimos escalões (Muito Bom, Excelente).

                Assim, e para grande maioria dos grupos, pede-se que implementem os requisitos das fases 1 e 2. Os restantes terão de desenvolver a aplicação cujos requisitos se apresentam a seguir.

                Pautas musicais

                [Voltar ao índice]

                Desenvolve uma aplicação para a geração automática de pautas musicais coloridas. O programa deverá aceitar um ficheiro de texto com a descrição textual de uma música e deverá gerar uma imagem P3 ou P6 com a respectiva pauta musical.

                Os requisitos para a aplicação são os seguintes:

                1. O desenho da pauta fica ao teu critério: espessura das linhas, dimensões das notas, ...
                2. Uma pauta é constituída por cinco linhas horizontais espaçadas uniformemente. As notas colocam-se sobre as linhas ou nos espaços entre elas.
                3. Uma música é constituída por uma lista de compassos. Cada compasso deverá ser separado do seguinte por uma linha vertical de espessura ligeiramente inferior à das linhas da pauta.
                4. A cor das notas não é livre e deverá seguir o seguinte esquema:

                  Nota Musical Descrição Côr RGB em Hex
                  C FF0000
                  C# ou Db Dó sustenido ou Ré bemol FF3300
                  D FF6600
                  D# ou Eb Ré sustenido ou Mi bemol FFCC00
                  E Mi FFFF33
                  F 00FF00
                  F# ou Gb Fá sustenido ou Sol bemol 00AA00
                  G Sol 004400
                  G# ou Ab Sol sustenido ou Lá bemol 0000FF
                  A 330033
                  A# ou Bb Lá sustenido ou Si bemol 990066
                  B Si FF0066
                  CM Dó maior FF0000

                5. O ficheiro de entrada, onde é descrita a música em forma textual, tem a seguinte estrutura:

                  • Na primeira linha tem o título da música.
                  • Cada linha das que se seguem à primeira contem um compasso da música.
                  • Numa linha de compasso cada nota é separada da que se lhe segue por um espaço.
                  • Além de notas podem aparecer pausas e sinais de repetição (o tratmento destes é opcional).
                  • A título de exemplo, apresenta-se a seguir a descrição de uma música popular portuguesa bem conhecida:

                    O Chapéu de 3 bicos
                    G
                    CM G
                    G F E
                    F D
                    D E
                    F F G
                    A G
                    E
                    Pausa
                    G CM G G
                    F E F D
                    D E F
                    G A G C
                    Repete
                  • O resultado esperado para o exemplo anterior pode ser visualizado em: O Chapéu de 3 bicos.

                A seguir apresentam-se mais músicas para teste da aplicação final.

                Músicas populares

                [Voltar ao índice]

                • O lencinho
                  O lencinho
                  G A
                  G E
                  C G A
                  G E
                  C C C
                  D D C D
                  E E D E
                  F F E F
                  G G A
                  G E
                  C G A
                  G E
                  C C C
                  D D C D
                  E F G A
                  G F E D
                  C C
                  E F
                  G
                  Pausa E F
                  G
                  Pausa A Bb
                  CM
                  Pausa A Bb
                  CM
                  Pausa C C 
                  C C Bb A
                  G G G A
                  G F E D 
                  C C
                  Repete
                • Dança das Horas: nesta música existem acordes (notas que devem ser tocadas ao mesmo tempo); um acorde tem parentesis curvos a limitar as suas notas; as notas de um acorde devem ser desenhadas alinhadas verticalmente, ou seja, o centro do círculo de cada nota deve estar sobre a mesma linha vertical; o tratamento de acordes é um extra.
                  Dança das Horas
                  A
                  F G
                  C
                  C
                  G A
                  F
                  F A
                  G F
                  C
                  C C
                  G A
                  F
                  F Pausa
                  (F A)
                  (F A)
                  (F A)
                  Pausa C
                  F
                • O balão do João
                  O balão do João
                  G E E
                  F D D
                  C D E F
                  G G G
                  G E E
                  F D D
                  C E G G
                  (G C E)
                  Repete
                  D D D D
                  D E F
                  E E E E 
                  E F G
                  G E E
                  F D D
                  C E G G
                  (G C E)
                  Repete
                • Lagarto Pintado
                  Lagarto Pintado
                  C
                  G CM G
                  E C
                  A A A
                  A G
                  G CM G
                  E C
                  F E D
                  C
                  Repete

                WebChanges 16 Aug 2001 - 19:58 - NEW PeterThoeny?

                50 Recent Changes in TWiki Web retrieved at 17:42 (GMT)

                WebHome 12 Feb 2007 - 19:53 - r14 JoseBacelarAlmeida
                Programação Imperativa 1ºano da LMCC2004/2005 Equipe Docente: Carlos Ramalho, Rangel Henriques, Personal.Nuno Rodrigues Novidades ...
                WebStatistics 10 Feb 2007 - 12:25 - r328 TWikiGuest
                Statistics for Education/ProgramacaoImperativa Web Month: Topic views: Topic saves: File uploads: Most popular topic views: Top contributors ...
                NovasPI 27 Jul 2005 - 10:48 - r18 JoseCarlosRamalho
                $ 27 07 2005: Finais após a época de recurso $ 22 06 2005: As notas práticas são, a partir de agora, definitivas.
                TrabalhosPratico 20 May 2005 - 11:50 - r4 JoseCarlosRamalho
                Projecto Integrado Arquitecturas de Computadores (AC2005) e Programa o Imperativa (PI2005) ...
                Ficha8 29 Apr 2005 - 09:01 - r2 PedroRangelHenriques
                Ficha Nº7: Estruturas de Dados Dinâmicas Listas Ligadas Objectivos: O objectivo principal desta ficha é familiarizar o aluno com a utilização de estruturas de dados ...
                Ficha7 29 Apr 2005 - 09:01 - r2 PedroRangelHenriques
                Ficha Nº6: Arrays e Estruturas Objectivos: O objectivo principal desta ficha é familiarizar o aluno com a utilização de algoritmos mais avançados de busca e ordena ...
                FichasPraticas 29 Apr 2005 - 09:00 - r10 PedroRangelHenriques
                para Submissão de Fichas Práticas e de Trabalhos Práticos Ficha 1, Ambientação ao unix e utilização de algumas ferramentas: gcc, vi, make, latex. (em PDF, em ...
                Ficha5 29 Apr 2005 - 08:56 - r6 PedroRangelHenriques
                Ficha Nº5 Objectivos: O objectivo principal desta ficha é consolidar os conhecimentos sobre manipulação de arrays em C expandindo para a manipulação de arrays multidimensionais ...
                WebPreferences 20 Apr 2005 - 08:37 - r13 JoseCarlosRamalho
                Education/ProgramacaoImperativa Web Preferences The following settings are web preferences of the Education/ProgramacaoImperativa web. These preferences overwrite ...
                Fase1Aval 31 Mar 2005 - 12:54 - NEW JoseCarlosRamalho
                COMUNICADO Neste momento, está a ser preparado um documento que será subscrito por todos os docentes envolvidos e que faz uma análise ao que aconteceu ontem e que ...
                Comunicado_F1 30 Mar 2005 - 20:20 - NEW JoseCarlosRamalho
                COMUNICADO Caros colegas e alunos, depois dos acontecimentos ocorridos no dia de hoje e que foram as entregas e defesas da fase 1 do Projecto Integrado achei que devia ...
                TPImagens 29 Mar 2005 - 20:44 - NEW JoseCarlosRamalho
                circle2.pbm: Círculo circle.pbm: Círculo Imagem JPG: pote de cerâmica: image007.pbm: O pote no formato PBM image007.ppm: O pote no formato ...
                Ficha8Res 20 Mar 2005 - 21:23 - NEW JoseCarlosRamalho
                Makefile prog.exe : prog.o lista.o gcc o prog.exe prog.o lista.o prog.o : prog.c lista.h gcc c prog.c lista.o : lista.h lista.c gcc c lista.c lista ...
                Ficha4 20 Mar 2005 - 21:12 - r2 JoseCarlosRamalho
                Ficha Nº4 Objectivos: O objectivo principal desta ficha é familiarizar o aluno com a utilização e manipulação de vectores e matrizes em C. As strings são casos ...
                Ficha6 20 Mar 2005 - 21:08 - NEW JoseCarlosRamalho
                Ficha Nº6: Busca e Ordenação de Arrays Objectivos: O objectivo principal desta ficha é familiarizar o aluno com a utilização dos algoritmos tradicionais de busca ...
                Ficha3 13 Mar 2005 - 10:45 - r2 JoseCarlosRamalho
                Ficha Nº3 Objectivos: O objectivo principal desta ficha é familiarizar o aluno com a codificação de algoritmos um pouco mais complexos alguns deles envolvendo ...
                Ficha2 03 Mar 2005 - 11:27 - r2 JoseCarlosRamalho
                Ficha Nº2 Objectivos: O objectivo principal desta ficha é familiarizar o aluno com a linguagem algorítmica que irá ser usada para especificar os algoritmos ...
                Ficha1 24 Feb 2005 - 15:46 - r2 JoseCarlosRamalho
                Funcionamento das aulas Teórico Práticas e Práticas As aulas teórico práticas da diciplina Programação Imperativa são baseadas na realização de uma ficha teórico pr ...
                MenuTopics 21 Feb 2005 - 09:33 - NEW AlcinoCunha
                WebNotify 28 Aug 2004 - 07:30 - r4 PeterThoeny?
                This is a subscription service to be automatically notified by e mail when topics change in this Education/ProgramacaoImperativa web. This is a convenient service ...
                WebLeftBar 16 Aug 2004 - 05:52 - NEW ArthurClemens?
                Web Web Home Changes Index Search Webs
                WebRss 16 Aug 2004 - 03:27 - r2 PeterThoeny?
                TWiki's Education/ProgramacaoImperativa web /view/Education/ProgramacaoImperativa The Education/ProgramacaoImperativa web of TWiki. TWiki is a Web Based Collaboration ...
                WebSearchAdvanced 18 Jan 2004 - 10:52 - NEW PeterThoeny?
                WebIndex 24 Nov 2001 - 11:41 - r2 PeterThoeny?
                See also the faster WebTopicList
                WebTopicList 24 Nov 2001 - 11:40 - NEW PeterThoeny?
                See also the verbose WebIndex.
                WebChanges 16 Aug 2001 - 19:58 - NEW PeterThoeny?
                WebSearch 08 Aug 2001 - 05:26 - NEW PeterThoeny?
                Found 27 topics.

                See also: rss-small RSS feed, recent changes with 50, 100, 200, 500, 1000 topics, all changes

                WebHome 12 Feb 2007 - 19:53 - r14 JoseBacelarAlmeida

                largo_paco_sec_XVI.jpg


                Novidades

                27-07-2005
                Resultados Finais após a época de recurso
                22-06-2005
                As notas práticas são, a partir de agora, definitivas.

                WebIndex 24 Nov 2001 - 11:41 - r2 PeterThoeny?
                Education/ProgramacaoImperativa Web Changed Changed by
                Comunicado_F1 30 Mar 2005 - 20:20 - NEW JoseCarlosRamalho
                COMUNICADO Caros colegas e alunos, depois dos acontecimentos ocorridos no dia de hoje e que foram as entregas e defesas da fase 1 do Projecto Integrado achei que devia ...
                Fase1Aval 31 Mar 2005 - 12:54 - NEW JoseCarlosRamalho
                COMUNICADO Neste momento, está a ser preparado um documento que será subscrito por todos os docentes envolvidos e que faz uma análise ao que aconteceu ontem e que ...
                Ficha1 24 Feb 2005 - 15:46 - r2 JoseCarlosRamalho
                Funcionamento das aulas Teórico Práticas e Práticas As aulas teórico práticas da diciplina Programação Imperativa são baseadas na realização de uma ficha teórico pr ...
                Ficha2 03 Mar 2005 - 11:27 - r2 JoseCarlosRamalho
                Ficha Nº2 Objectivos: O objectivo principal desta ficha é familiarizar o aluno com a linguagem algorítmica que irá ser usada para especificar os algoritmos ...
                Ficha3 13 Mar 2005 - 10:45 - r2 JoseCarlosRamalho
                Ficha Nº3 Objectivos: O objectivo principal desta ficha é familiarizar o aluno com a codificação de algoritmos um pouco mais complexos alguns deles envolvendo ...
                Ficha4 20 Mar 2005 - 21:12 - r2 JoseCarlosRamalho
                Ficha Nº4 Objectivos: O objectivo principal desta ficha é familiarizar o aluno com a utilização e manipulação de vectores e matrizes em C. As strings são casos ...
                Ficha5 29 Apr 2005 - 08:56 - r6 PedroRangelHenriques
                Ficha Nº5 Objectivos: O objectivo principal desta ficha é consolidar os conhecimentos sobre manipulação de arrays em C expandindo para a manipulação de arrays multidimensionais ...
                Ficha6 20 Mar 2005 - 21:08 - NEW JoseCarlosRamalho
                Ficha Nº6: Busca e Ordenação de Arrays Objectivos: O objectivo principal desta ficha é familiarizar o aluno com a utilização dos algoritmos tradicionais de busca ...
                Ficha7 29 Apr 2005 - 09:01 - r2 PedroRangelHenriques
                Ficha Nº6: Arrays e Estruturas Objectivos: O objectivo principal desta ficha é familiarizar o aluno com a utilização de algoritmos mais avançados de busca e ordena ...
                Ficha8 29 Apr 2005 - 09:01 - r2 PedroRangelHenriques
                Ficha Nº7: Estruturas de Dados Dinâmicas Listas Ligadas Objectivos: O objectivo principal desta ficha é familiarizar o aluno com a utilização de estruturas de dados ...
                Ficha8Res 20 Mar 2005 - 21:23 - NEW JoseCarlosRamalho
                Makefile prog.exe : prog.o lista.o gcc o prog.exe prog.o lista.o prog.o : prog.c lista.h gcc c prog.c lista.o : lista.h lista.c gcc c lista.c lista ...
                FichasPraticas 29 Apr 2005 - 09:00 - r10 PedroRangelHenriques
                para Submissão de Fichas Práticas e de Trabalhos Práticos Ficha 1, Ambientação ao unix e utilização de algumas ferramentas: gcc, vi, make, latex. (em PDF, em ...
                MenuTopics 21 Feb 2005 - 09:33 - NEW AlcinoCunha
                NovasPI 27 Jul 2005 - 10:48 - r18 JoseCarlosRamalho
                $ 27 07 2005: Finais após a época de recurso $ 22 06 2005: As notas práticas são, a partir de agora, definitivas.
                TPImagens 29 Mar 2005 - 20:44 - NEW JoseCarlosRamalho
                circle2.pbm: Círculo circle.pbm: Círculo Imagem JPG: pote de cerâmica: image007.pbm: O pote no formato PBM image007.ppm: O pote no formato ...
                TrabalhosPratico 20 May 2005 - 11:50 - r4 JoseCarlosRamalho
                Projecto Integrado Arquitecturas de Computadores (AC2005) e Programa o Imperativa (PI2005) ...
                WebChanges 16 Aug 2001 - 19:58 - NEW PeterThoeny?
                WebHome 12 Feb 2007 - 19:53 - r14 JoseBacelarAlmeida
                Programação Imperativa 1ºano da LMCC2004/2005 Equipe Docente: Carlos Ramalho, Rangel Henriques, Personal.Nuno Rodrigues Novidades ...
                WebIndex 24 Nov 2001 - 11:41 - r2 PeterThoeny?
                See also the faster WebTopicList
                WebLeftBar 16 Aug 2004 - 05:52 - NEW ArthurClemens?
                Web Web Home Changes Index Search Webs
                WebNotify 28 Aug 2004 - 07:30 - r4 PeterThoeny?
                This is a subscription service to be automatically notified by e mail when topics change in this Education/ProgramacaoImperativa web. This is a convenient service ...
                WebPreferences 20 Apr 2005 - 08:37 - r13 JoseCarlosRamalho
                Education/ProgramacaoImperativa Web Preferences The following settings are web preferences of the Education/ProgramacaoImperativa web. These preferences overwrite ...
                WebRss 16 Aug 2004 - 03:27 - r2 PeterThoeny?
                TWiki's Education/ProgramacaoImperativa web /view/Education/ProgramacaoImperativa The Education/ProgramacaoImperativa web of TWiki. TWiki is a Web Based Collaboration ...
                WebSearch 08 Aug 2001 - 05:26 - NEW PeterThoeny?
                WebSearchAdvanced 18 Jan 2004 - 10:52 - NEW PeterThoeny?
                WebStatistics 10 Feb 2007 - 12:25 - r328 TWikiGuest
                Statistics for Education/ProgramacaoImperativa Web Month: Topic views: Topic saves: File uploads: Most popular topic views: Top contributors ...
                WebTopicList 24 Nov 2001 - 11:40 - NEW PeterThoeny?
                See also the verbose WebIndex.
                Found 27 topics.

                See also the faster WebTopicList

                WebLeftBar 16 Aug 2004 - 05:52 - NEW ArthurClemens?

                WebNotify 28 Aug 2004 - 07:30 - r4 PeterThoeny?
                This is a subscription service to be automatically notified by e-mail when topics change in this Education/ProgramacaoImperativa web. This is a convenient service, so you do not have to come back and check all the time if something has changed. To subscribe, please add a bullet with your WikiName in alphabetical order to this list:

                Web Changes Notification Service

                Each TWiki web has an automatic e-mail notification service that sends you an e-mail with links to all of the topics modified since the last alert.

                Users subscribe to email notifications using their WikiName or an alternative email address, and can specify the webs/topics they wish to track using one of these bullet list formats:

                three spaces * [ webname . ] wikiName - SMTP mail address
                three spaces * [ webName . ] wikiName
                three spaces * SMTP mail address
                three spaces * SMTP mail address : topics
                three spaces * [ webname . ] wikiName : topics

                In the above examples, topics is a space-separated list of topic names. The user may further customize the specific content they will receive using the following formats:

                • Specify topics without a Web. prefix
                • Topics must exist in this web.
                • Topics may be specified using * wildcards
                • Each topic may optionally be preceded by a '+' or '-' sign. The '+' sign means "subscribe to this topic" (the same as not putting anything). The '-' sign means "unsubscribe" or "don't send notifications regarding this topic". This allows users to elect to filter out certain topics (and their children, to an arbitrary depth). Topic filters ('-') take precedence over topic includes ('+').
                • Each topic may optionally be followed by an integer in parentheses, indicating the depth of the tree of children below that topic. Changes in all these children will be detected and reported along with changes to the topic itself. Note This uses the TWiki "Topic parent" feature.
                • Each topic may optionally be immediately followed by an exclamation mark ! or a question mark ? with no intervening spaces, indicating that the topic (and children if there is a tree depth specifier as well) should be mailed out as complete topics instead of change summaries. ! causes the topic to be mailed every time even if there have been no changes, ? will mail the topic only if there have been changes to it. This only makes sense for subscriptions.

                For example: Subscribe Daisy to all changes to topics in this web.

                   * daisy.cutter@flowers.com
                
                Subscribe Daisy to all changes in all webs that start with Web.
                   * daisy.cutter@flowers.com: Web*
                
                Subscribe Daisy to changes to topics starting with Petal, and their immediate children, WeedKillers and children to a depth of 3, and all topics that match start with Pretty and end with Flowers e.g. PrettyPinkFlowers
                   * TWiki.DaisyCutter: Petal* (1) TWiki.WeedKillers (3) Pretty*Flowers
                
                Subscribe StarTrekFan to changes to all topics that start with Star except those that end in Wars, sInTheirEyes or shipTroopers.
                   * TWiki.StarTrekFan: Star* - *Wars - *sInTheirEyes - *shipTroopers
                
                Subscribe Daisy to the full content of NewsLetter whenever it has changed
                   * daisy@flowers.com: TWiki.NewsLetter?
                
                Subscribe buttercup to NewsLetter and its immediate children, even if it hasn't changed.
                   * buttercup@flowers.com: TWiki.NewsLetter! (1)
                
                Subscribe GardenGroup (which includes Petunia) to all changed topics under AllnewsLetters to a depth of 3. Then unsubscribe Petunia from the ManureNewsLetter, which she would normally get as a member of GardenGroup? :
                   * TWiki.GardenGroup: TWiki.AllNewsLetters? (3)
                   * petunia@flowers.com: - TWiki.ManureNewsLetter
                
                A user may be listed many times in the WebNotify topic. Where a user has several lines in WebNotify that all match the same topic, they will only be notified about changes that topic once (though they will still receive individual mails for news topics).

                If a TWiki group is listed for notification, the group will be recursively expanded to the e-mail addresses of all members.

                TIP Tip: List names in alphabetical order to make it easier to find the names.

                Note for System Administrators: Notification is supported by an add-on to the TWiki kernel called the MailerContrib. See the MailerContrib topic for details of how to set up this service.

                Note: If you prefer a news feed, point your reader to WebRss (for RSS 1.0 feeds) or WebAtom? (for ATOM 1.0 feeds). Learn more at WebRssBase and WebAtomBase, respectively.

                Related topics: WebChangesAlert, TWikiUsers, TWikiRegistration

                WebPreferences 20 Apr 2005 - 08:37 - r13 JoseCarlosRamalho

                Education/ProgramacaoImperativa Web Preferences

                The following settings are web preferences of the Education.ProgramacaoImperativa web. These preferences overwrite the site-level preferences in TWikiPreferences, and can be overwritten by user preferences (your personal topic, eg: TWikiGuest in the Main web).

                Preferences:

                • Set WEBTITLE = Programação Imperativa

                • List of topics of the TWiki.Education/ProgramacaoImperativa web:

                • Web specific background color: (Pick a lighter one of the StandardColors)
                  • Set WEBBGCOLOR = #00CCCC

                • List this web in the SiteMap:
                  • If yes, set SITEMAPLIST to on, do not set NOSEARCHALL, and add the "what" and "use to..." description for the site map. Make sure to list only links that include the name of the web, e.g. Education/ProgramacaoImperativa.Topic links.
                  • Set SITEMAPLIST = on
                  • Set SITEMAPWHAT =
                  • Set SITEMAPUSETO = ...collaborate on

                • Exclude web from a web="all" search: (Set to on for hidden webs)
                  • Set NOSEARCHALL =

                • Prevent automatic linking of WikiWords and acronyms (if set to on); link WikiWords (if empty); can be overwritten by web preferences:
                  • Set NOAUTOLINK =
                  • Note: Use the [[...][...]] syntax to link topics in case you disabled WikiWord linking. The <noautolink> ... </noautolink> syntax can be used to prevents links within a block of text.

                • Default template for new topics and form(s) for this web:
                  • WebTopicEditTemplate? : Default template for new topics in this web. (Site-level is used if topic does not exist)
                  • TWiki.WebTopicEditTemplate: Site-level default template
                  • TWikiForms: How to enable form(s)
                  • Set WEBFORMS =

                • Web preferences that are not allowed to be overridden by user preferences:
                  • Set FINALPREFERENCES = NOSEARCHALL, ATTACHFILESIZELIMIT, WIKIWEBMASTER, WEBCOPYRIGHT, WEBTOPICLIST, DENYWEBVIEW, ALLOWWEBVIEW, DENYWEBCHANGE, ALLOWWEBCHANGE, DENYWEBRENAME, ALLOWWEBRENAME

                Notes:

                • A preference is defined as:
                  6 spaces * Set NAME = value
                  Example:
                  • Set WEBBGCOLOR = #FFFFC0
                • Preferences are used as TWikiVariables by enclosing the name in percent signs. Example:
                  • When you write variable %WEBBGCOLOR% , it gets expanded to #00CCCC .
                • The sequential order of the preference settings is significant. Define preferences that use other preferences first, i.e. set WEBCOPYRIGHT before WIKIWEBMASTER since %WEBCOPYRIGHT% uses the %WIKIWEBMASTER% variable.
                • You can introduce new preferences variables and use them in your topics and templates. There is no need to change the TWiki engine (Perl scripts).

                Related Topics:

                WebRss 16 Aug 2004 - 03:27 - r2 PeterThoeny?
                TWiki's Education/ProgramacaoImperativa web http://wiki.di.uminho.pt/twiki/bin/view/Education/ProgramacaoImperativa The Education/ProgramacaoImperativa web of TWiki. TWiki is a Web-Based Collaboration Platform for the Corporate World. en-us Copyright 2020 by contributing authors TWiki Administrator [webmaster@di.uminho.pt] The contributing authors of TWiki TWiki DIUM.Education/ProgramacaoImperativa http://wiki.di.uminho.pt/twiki/bin/view/Education/ProgramacaoImperativa /twiki/pub/Main/LocalLogos/um_eengP.jpg WebHome http://wiki.di.uminho.pt/twiki/bin/view/Education/ProgramacaoImperativa/WebHome Programação Imperativa 1ºano da LMCC2004/2005 Equipe Docente: Carlos Ramalho, Rangel Henriques, Personal.Nuno Rodrigues Novidades ... (last changed by JoseBacelarAlmeida) 2007-02-12T19:53:38Z JoseBacelarAlmeida NovasPI http://wiki.di.uminho.pt/twiki/bin/view/Education/ProgramacaoImperativa/NovasPI $ 27 07 2005: Finais após a época de recurso $ 22 06 2005: As notas práticas são, a partir de agora, definitivas. (last changed by JoseCarlosRamalho) 2005-07-27T10:48:06Z JoseCarlosRamalho TrabalhosPratico http://wiki.di.uminho.pt/twiki/bin/view/Education/ProgramacaoImperativa/TrabalhosPratico Projecto Integrado Arquitecturas de Computadores (AC2005) e Programa o Imperativa (PI2005) ... (last changed by JoseCarlosRamalho) 2005-05-20T11:50:47Z JoseCarlosRamalho Ficha8 http://wiki.di.uminho.pt/twiki/bin/view/Education/ProgramacaoImperativa/Ficha8 Ficha Nº7: Estruturas de Dados Dinâmicas Listas Ligadas Objectivos: O objectivo principal desta ficha é familiarizar o aluno com a utilização de estruturas de dados ... (last changed by PedroRangelHenriques) 2005-04-29T09:01:34Z PedroRangelHenriques Ficha7 http://wiki.di.uminho.pt/twiki/bin/view/Education/ProgramacaoImperativa/Ficha7 Ficha Nº6: Arrays e Estruturas Objectivos: O objectivo principal desta ficha é familiarizar o aluno com a utilização de algoritmos mais avançados de busca e ordena ... (last changed by PedroRangelHenriques) 2005-04-29T09:01:06Z PedroRangelHenriques FichasPraticas http://wiki.di.uminho.pt/twiki/bin/view/Education/ProgramacaoImperativa/FichasPraticas para Submissão de Fichas Práticas e de Trabalhos Práticos Ficha 1, Ambientação ao unix e utilização de algumas ferramentas: gcc, vi, make, latex. (em PDF, em ... (last changed by PedroRangelHenriques) 2005-04-29T09:00:11Z PedroRangelHenriques Ficha5 http://wiki.di.uminho.pt/twiki/bin/view/Education/ProgramacaoImperativa/Ficha5 Ficha Nº5 Objectivos: O objectivo principal desta ficha é consolidar os conhecimentos sobre manipulação de arrays em C expandindo para a manipulação de arrays multidimensionais ... (last changed by PedroRangelHenriques) 2005-04-29T08:56:52Z PedroRangelHenriques WebPreferences http://wiki.di.uminho.pt/twiki/bin/view/Education/ProgramacaoImperativa/WebPreferences Education/ProgramacaoImperativa Web Preferences The following settings are web preferences of the Education/ProgramacaoImperativa web. These preferences overwrite ... (last changed by JoseCarlosRamalho) 2005-04-20T08:37:47Z JoseCarlosRamalho Fase1Aval http://wiki.di.uminho.pt/twiki/bin/view/Education/ProgramacaoImperativa/Fase1Aval COMUNICADO Neste momento, está a ser preparado um documento que será subscrito por todos os docentes envolvidos e que faz uma análise ao que aconteceu ontem e que ... (last changed by JoseCarlosRamalho) 2005-03-31T12:54:21Z JoseCarlosRamalho Comunicado_F1 http://wiki.di.uminho.pt/twiki/bin/view/Education/ProgramacaoImperativa/Comunicado_F1 COMUNICADO Caros colegas e alunos, depois dos acontecimentos ocorridos no dia de hoje e que foram as entregas e defesas da fase 1 do Projecto Integrado achei que devia ... (last changed by JoseCarlosRamalho) 2005-03-30T20:20:06Z JoseCarlosRamalho TPImagens http://wiki.di.uminho.pt/twiki/bin/view/Education/ProgramacaoImperativa/TPImagens circle2.pbm: Círculo circle.pbm: Círculo Imagem JPG: pote de cerâmica: image007.pbm: O pote no formato PBM image007.ppm: O pote no formato ... (last changed by JoseCarlosRamalho) 2005-03-29T20:44:17Z JoseCarlosRamalho Ficha8Res http://wiki.di.uminho.pt/twiki/bin/view/Education/ProgramacaoImperativa/Ficha8Res Makefile prog.exe : prog.o lista.o gcc o prog.exe prog.o lista.o prog.o : prog.c lista.h gcc c prog.c lista.o : lista.h lista.c gcc c lista.c lista ... (last changed by JoseCarlosRamalho) 2005-03-20T21:23:06Z JoseCarlosRamalho Ficha4 http://wiki.di.uminho.pt/twiki/bin/view/Education/ProgramacaoImperativa/Ficha4 Ficha Nº4 Objectivos: O objectivo principal desta ficha é familiarizar o aluno com a utilização e manipulação de vectores e matrizes em C. As strings são casos ... (last changed by JoseCarlosRamalho) 2005-03-20T21:12:02Z JoseCarlosRamalho Ficha6 http://wiki.di.uminho.pt/twiki/bin/view/Education/ProgramacaoImperativa/Ficha6 Ficha Nº6: Busca e Ordenação de Arrays Objectivos: O objectivo principal desta ficha é familiarizar o aluno com a utilização dos algoritmos tradicionais de busca ... (last changed by JoseCarlosRamalho) 2005-03-20T21:08:43Z JoseCarlosRamalho Ficha3 http://wiki.di.uminho.pt/twiki/bin/view/Education/ProgramacaoImperativa/Ficha3 Ficha Nº3 Objectivos: O objectivo principal desta ficha é familiarizar o aluno com a codificação de algoritmos um pouco mais complexos alguns deles envolvendo ... (last changed by JoseCarlosRamalho) 2005-03-13T10:45:36Z JoseCarlosRamalho Ficha2 http://wiki.di.uminho.pt/twiki/bin/view/Education/ProgramacaoImperativa/Ficha2 Ficha Nº2 Objectivos: O objectivo principal desta ficha é familiarizar o aluno com a linguagem algorítmica que irá ser usada para especificar os algoritmos ... (last changed by JoseCarlosRamalho) 2005-03-03T11:27:32Z JoseCarlosRamalho

                WebSearch 08 Aug 2001 - 05:26 - NEW PeterThoeny?

                Web Search

                Search: \.*

                Found 0 topics.

                  Advanced search | Help
                TIP: to search for all topics that contain "SOAP", "WSDL", a literal "web service", but not "shampoo", write: soap wsdl "web service" -shampoo
                Search where:       
                (otherwise search Education/ProgramacaoImperativa Web only)

                Other search options:
                WebSearchAdvanced 18 Jan 2004 - 10:52 - NEW PeterThoeny?

                Advanced Search

                Search: \.*

                Education/ProgramacaoImperativa Web Changed Changed by
                Comunicado_F1 30 Mar 2005 - 20:20 - NEW JoseCarlosRamalho
                ++ COMUNICADO

                Caros colegas e alunos, depois dos acontecimentos ocorridos no dia de hoje e que foram as entregas e defesas da fase 1 do Projecto Integrado achei que devia redigir este comunicado para, pelo menos, todos reflectirmos um pouco sobre o que aconteceu.

                Antes de mais, queria aqui deixar expressos os meus parabéns a todos os alunos que, com mais ou menos dificuldades, realizaram um trabalho honesto e compareceram como acordado para fazerem a respectiva defesa.

                Foi com grande consternação e tristeza que ao fazer o balanço no fim do dia, a equipe docente constatou que cerca de 50% dos trabalhos apresentados incluíam fraudes a vários níveis. Muitos de vocês foram afectados pos esta situação e no fim fiquei com a sensação de que não perceberam inteiramente o que tinham feito o que motivou esta minha reflexão. Não percebem que:

                • copiar um trabalho é o mesmo que roubar, é como entrar num gabinete com a porta aberta e retirar de lá o que entenderem?
                • ao copiar um trabalho estão a desvalorizar o vosso trabalho?
                • ao copiar um trabalho estão a enganar-se a vocês próprios pois não aprendem?
                • ao copiar estão a enganar o docente que tem estado empenhado em ensinar-vos e em preparar-vos para o que será o resto da vossa vida?
                • um dia podem não ter nada nem ninguém por onde copiar? E aí? Como irão fazer se a vossa cabeça não está preparada para pensar per si?
                • se quiserem viver num país honesto onde as pessoas sejam verdadeiras isso pode começar por cada um de vocês? Que exemplos dão aos outros ao vosso lado ou que ainda caminham atrás de vós?

                Pensem nestas questões que aqui deixo e que se estamos a actuar como actuámos é porque acreditamos que vocês podem ser muito melhores do que mostraram hoje.

                Eu acredito. Vocês acreditam? Ainda temos um caminho a percorrer juntos...

                José Carlos Ramalho

                PS: Atendendo à dimensão do problema a equipe docente emitirá, amanhã às 12.00h, um comunicado onde ficará estabelecido em definitivo como será o procedimento relativamente às situações fraudulentas detectadas hoje (isto só será feito por serem alunos do 1º ano).

                -- JoseCarlosRamalho - 30 Mar 2005

                Fase1Aval 31 Mar 2005 - 12:54 - NEW JoseCarlosRamalho
                COMUNICADO

                Neste momento, está a ser preparado um documento que será subscrito por todos os docentes envolvidos e que faz uma análise ao que aconteceu ontem e que justifica as medidas que serão tomadas e que se descrevem a seguir (as que estão relacionadas com PI).

                Assim, foi estipulado o seguinte:

                1. As fases do trabalho terão pesos diferentes sendo que a primeira vale 20%, a segunda 40% e a terceira também 40% da nota prática final.
                2. Excepcionalmente, e porque estamos perante uma turma do 1º ano, os alunos apanhados em atitudes fraudulentas será contabilizado um 0 na primeira fase (na pauta aparecerá FRAUDE), podendo continuar a trabalhar para a disciplina entregando as fases seguintes.

                -- JoseCarlosRamalho - 31 Mar 2005

                Ficha1 24 Feb 2005 - 15:46 - r2 JoseCarlosRamalho
                ++ Funcionamento das aulas Teórico-Práticas e Práticas

                As aulas teórico-práticas da diciplina Programação Imperativa são baseadas na realização de uma ficha teórico-prática por semana, previamente disponível aqui neste site.

                Na aula teórico-prática semanal, a ficha será abordada sob o ponto de vista algorítmico. Espera-se que o aluno pense no problema e especifique uma possível solução. Na aula prática, os alunos deverão desenvolver os seus algoritmos em C e colocá-los a funcionar no computador. No fim, cada grupo deverá submeter ao sistema de submissões electrónico a ficha com as suas resoluções.

                ++ Ambiente de Programação em C

                Para a resolução dos programas apresentados nas fichas de Programação Imperativa, aconselham-se todos os alunos a criar um ambiente de trabalho no computador que permita editar, compilar e executar os programas C, bem como preparar a documentação associada aos programas desenvolvidos.

                +++ Comentários em C

                Diga quais as formas permitidas para misturar comentários com o texto dos programas, na linguagem C.

                +++ Primeiro programa C - "Hello world!"

                Desenvolva um programa C que escreve a string "O meu primeiro programa" no écran do computador.

                +++ Compilação separada em C

                Verifique o que faz cada uma das seguintes opções do gcc:

                • gcc -E
                • gcc -S
                • gcc -c
                • gcc -o ou só gcc

                +++ Soma de 2 números inteiros

                Escreva um novo programa C, que soma dois números inteiros, previamente declarados e inicializados respectivamente com 7 e 9, e escreve o resultado da soma.

                +++ Utilização do gcc Escreva os comandos para realizar as acções seguintes:

                • Comandos para compilar os programas C (sem gerar o
                executável).
                • Comandos para gerar um executável: soma.exe

                ++ Makefiles

                Analise a seguinte Makefile:

                soma: soma.c
                    gcc -o soma.exe soma.c
                
                ppp: soma.c
                    gcc -E soma.c
                
                asm: soma.c
                    gcc -S soma.c
                

                +++ Utilização de makefiles

                Considerando a Makefile apresentada, e que a mesma está guardada no arquivo Makefile, execute os seguintes comandos:

                • Comando para gerar o executável.
                • Comando para correr apenas o pré-processador.
                • Comando para gerar o código Assembley.

                +++ Tratamento de excepções em makefiles

                Estude o funcionamento do comando make, e diga:

                • Qual a diferença entre os comandos:
                limpa:
                    rm *.log *.dvi *.aux
                
                limpa:
                    -rm *.log *.dvi *.aux
                

                ++ LaTeX?

                +++ Um pequeno relatório

                Com a ajuda do professor, elabore em LaTeX? , um pequeno relatório do trabalho realizado nesta ficha. Para tal edite o ficheiro TeX? desta ficha, acrescentando as soluções que desenvolveu na aula. No fim, gere um documento em PDF.

                -- JoseCarlosRamalho - 24 Feb 2005

                Ficha2 03 Mar 2005 - 11:27 - r2 JoseCarlosRamalho

                Ficha Nº2

                Objectivos:

                O objectivo principal desta ficha é familiarizar o aluno com a linguagem algorítmica que irá ser usada para especificar os algoritmos e com as estruturas de controlo da linguagem C.

                Para atingir esse fim, o aluno irá desenvolver pequenos algoritmos e tentar codificá-los em C.

                Exercícios:

                Exercício Nº1: O Maior de 2 Números

                Desenvolva o algoritmo, e posteriormente codifique-o em C, de um programa que lê dois inteiros e escreve o maior deles.

                Exercício Nº2: O Maior de N Números

                Desenvolva o algoritmo, e posteriormente codifique-o em C, de um programa que lê N inteiros e escreve o maior deles.

                Exercício Nº3: Números Pares

                Desenvolva o algoritmo, e posteriormente codifique-o em C, de um programa que lê um determinado número inteiro N e escreve os números pares até N.

                Exercício Nº4: Potências

                Desenvolva o algoritmo, e posteriormente codifique-o em C, de um programa que lê 2 números inteiros, a e b, e escreve o resultado de elevar a à potência de b (utilize estruturas cíclicas para calcular o valor da potência).

                Exercício Nº5: Factorial

                Desenvolva o algoritmo, e posteriormente codifique-o em C, de um programa que lê um inteiro positivo e escreve o valor do seu factorial.

                Exercício Nº6: Tabela de Conversão de Temperaturas

                Considere a seguinte fórmula:Fahreneit = 32 + (1.8 * Celsius)

                Desenvolva o algoritmo, e posteriormente codifique-o em C, de um programa que calcula uma tabela de conversão entre graus Celsius e graus Fahreneit com Fahreneit a variar entre 0 e 300 (considere intervalos de 5 graus).

                -- JoseCarlosRamalho - 28 Feb 2005

                Ficha3 13 Mar 2005 - 10:45 - r2 JoseCarlosRamalho

                Ficha Nº3

                Objectivos:

                O objectivo principal desta ficha é familiarizar o aluno com a codificação de algoritmos um pouco mais complexos alguns deles envolvendo manipulação de strings. Outro dos objectivos, é a integração com a disciplina de Arquitectura de Computadores, pelo que no fim da ficha aparece um conjunto de problemas sobre conversão de representações numéricas.

                Para atingir esse fim, o aluno irá desenvolver pequenos algoritmos e tentar codificá-los em C.

                Nota: os exercícios 2, 3, 4 e 9 são de resolução opcional. Na ficha a submeter ao sistema só são obrigatórios os restantes.

                Exercícios:

                [Exercício1] [Exercício2] [Exercício3] [Exercício4] [Exercício5] [Exercício6] [Exercício7] [Exercício8] [Exercício9]


                Exercício Nº1: Divisores de um número

                Desenvolva o algoritmo, e posteriormente codifique-o em C, de um programa que lê um inteiros e escreve no écran os seus divisores.


                Exercício Nº2: Maior Divisor Comum

                Desenvolva o algoritmo, e posteriormente codifique-o em C como uma função. A sua função deverá ter dois argumentos inteiros e produzir um resultado inteiro que é o maior divisor comum dos argumentos recebidos. Posteriormente codifique um programa principal (main()) que utiliza esta função para cálculo do maior divisor comum de dois números fornecidos pelo utilizador.

                Ver Algorítmo de Euclides

                Que pode ser resumido em:

                mdc(m,n) -->
                             m>=n : m%n==0 --> n
                                    m%n!=0 --> mdc(n,m%n)
                
                             m<n  : mdc(n,m)
                


                Exercício Nº3: Menor Múltiplo Comum

                Desenvolva o algoritmo, e posteriormente codifique-o em C como uma função. A sua função deverá ter dois argumentos inteiros e produzir um resultado inteiro que é o menor múltiplo comum dos argumentos recebidos. Posteriormente codifique um programa principal (main()) que utiliza esta função para cálculo do menor múltiplo comum de dois números fornecidos pelo utilizador.


                Exercício Nº4: É Primo?

                Desenvolva o algoritmo, e posteriormente codifique-o em C como uma função. A sua função deverá ter um argumento inteiros e produzir um resultado do tipo booleano (o docente irá desenvolver uma pequena biblioteca de booleanos: bool.h). O resultado será verdadeiro (TRUE) se o argumento passado fôr primo e falso (FALSE) caso contrário. Posteriormente codifique um programa principal (main()) que utiliza esta função para verificar quem é primo numa sequência de inteiros introduzidos pelo utilizador (terminada por 0).


                Exercício Nº5: Tudo ao contrário!

                Foste transferido para uma nova escola.

                Nessa escola, a professora e matemática gostava muito de pôr os alunos a pensar e tentava que a mais simples tarefa fosse algo em que o raciocínio tivesse que intervir.

                Uma das medidas que ela implementou foi a de utilizar os números inteiros invertidos. Por exemplo, o 12 seria 21 e o 1821 seria 1281.

                Ora, os alunos locais já estão habituados a lidar com os inteiros daquela maneira e até fazem as operações de adição e subtracção com os inteiros naquela forma. No entanto, para ti, que acabaste de chegar à escola esta tarefa não é tão simples. Assim, resolveste criar um programa em computador que fizesse três coisas:

                1. dado um número calcula o seu inverso (o valor inteiro correcto)
                2. dados dois números na forma invertida calcula a sua soma e devolve o resultado na mesma forma invertida
                3. dados dois números na forma invertida calcula a sua subtracção e devolve o resultado na mesma forma invertida

                Sugestão: especifica uma função para cada um dos pontos acima.


                Exercício Nº6: Sequência de Fibonacci

                Codifica um programa que gere os primeiros 20 números de Fibonacci. Os números de Fibonacci são definidos recursivamente da seguinte forma:

                   fib(0) = 1
                   fib(1) = 1
                   fib(n) = fib(n-1) + fib(n-2)   para n>=2
                

                Exercício Nº7: Conversão decimal-binário

                Depois de estudares o algoritmo das divisões sucessivas para a conversão de números decimais em números binários, desenvolvido na aula teórico-prática, codifica-o num programa em C.

                Exercício Nº8: Conversão binário-decimal

                Depois de teres resolvido o problema anterior, tenta resolver o problema inverso. Nota que os números binários são representados numa string com os carácteres 0 e 1.

                Exercício Nº9: Conversão binário-hexadecimal

                Pensa agora com converter um número binário em hexadecimal. Cria um programa em C para realizar esta tarefa.

                -- JoseCarlosRamalho - 07 Mar 2005

                Ficha4 20 Mar 2005 - 21:12 - r2 JoseCarlosRamalho

                Ficha Nº4

                Objectivos:

                O objectivo principal desta ficha é familiarizar o aluno com a utilização e manipulação de vectores e matrizes em C. As strings são casos particulares de arrays: uma string é um array em que os elementos são todos do tipo char. Assim, nesta ficha surgem também alguns exercícios envolvendo manipulação de strings.

                Exercícios:

                Média de 10 números; Capicua; Romano-Árabe; Cifra; Estatísticas;

                Exercício Nº1: Média de 10 números inteiros

                Especifique um programa e codifique-o em C que lê 10 números inteiros positivos de um ficheiro externo (considere que cada linha do ficheiro contem apenas um número) e escreve:

                • a sua média e o valor máximo;
                • os numeros maiores que a média;
                • a quantidade de números menores que a média;

                Depois de ter realizado as tarefas anteriores faça o programa produzir os resultados num ficheiro de nome relatorio.txt.

                Exercício Nº2: Capicua

                Especifique uma função que recebe uma string e verifica se a mesma é capicua (lida da esquerda para a direita, ou da direita para a esquerda, é a mesma palavra/frase).
                Exemplos típicos: ala ou rapar.
                Um caso curioso (e, claro, mais complexo) é a seguinte Capicua brasileira: Socorram-me subi no onibus em Marrocos.

                Exercício Nº3: Conversão Romano-Árabe

                Especifique uma função que recebe uma string contendo um número escrito em notação romana e que dá como resultado o respectivo valor inteiro (correspondente à notação arábica).

                Exercício Nº4: Cifra por substituição arbitrária

                Considere a cifra (palavra-chave) constituída pelas letras "SAPO" seguidas de um dígito n (entre 0 e 9). Para a cifragem (codificação) da mensagem efectuam-se os seguintes passos:

                1. reduzem-se espaços seguidos a um único espaço e mantém-se os caracteres de pontuação;
                2. os digitos rodam-se (circularmente) para a direita da quantidade n;
                3. convertem-se todas as letras em maiúsculas ou minúsculas;
                4. considera-se a seguinte tabela de codificação:

                A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
                S A P O B C D E F G H I J K L M N Q R T U V W X Y Z

                A construção desta tabela limita-se a colocar a palavra chave no início e completar com as restantes letras do alfabeto, não colocando as letras que se repetem.

                1. para a codificação, substitui-se cada um dos carácteres da primeira linha pelo carácter correspondente da segunda linha.

                Construa um programa que dada uma cifra, codifique a mensagem, e um outro que, dada a mensagem cifrada e a cifra, descodifique a mensagem.

                Exercício Nº5: Estatísticas de texto

                Crie um programa que leia todos os caracteres de um texto (até encontrar um o fimde ficheiro, eof) e que no fim indique quantas vezes apareceu cada uma das 26 letras do alfabeto (considere maiúsculas iguais às minúsculas).

                -- JoseCarlosRamalho - 13 Mar 2005

                Ficha5 29 Apr 2005 - 08:56 - r6 PedroRangelHenriques

                Ficha Nº5

                Objectivos:

                O objectivo principal desta ficha é consolidar os conhecimentos sobre manipulação de arrays em C expandindo para a manipulação de arrays multidimensionais, noemadamente as matrizes.

                Exercícios:

                Exercício Nº1: Gestão de Armazens

                Uma empresa tem 10 armazens e precisa de um programa que leia as vendas mensais dos 10 armazens, calcule a media de vendas e produza uma listagem dos armazens com vendas superiores à média calculada.

                Exercício Nº2: Contem ou Contido

                Desenvolva um algoritmo e posteriormente codifique-o em C que dadas dumas matrizes de dimensões arbitrárias verifica se a primeira contem a segunda (considere que os valores armazenados nas matrizes são do tipo inteiro).

                Exercício Nº3: Média dos Alunos

                Cada aluno de uma licenciatura em Ciências da Computação pode ter notas correspondentes a 10 disciplinas feitas durante o ano lectivo (caso não tenha sido avaliado positivamente a uma disciplina não terá essa nota).

                1. Declare as estruturas de dados (o modelo) necessárias para suportar o sistema de informação: um aluno tem um número (inteiro sequencial a partir de 1), um nome (string) e uma lista de notas (reais). Pense na hipótese de encarar o número do aluno como um código alfanumérico (para permitir números em qualquer escala, ou mesmo o uso de letras) e identifique as alterações daí decorrentes.
                2. Inicialize a estrutura de dados: na declaração e/ou numa função de inicialização que é chamada no início da função main().
                3. Crie as funções normais de manipulação de uma pequena base de dados:
                  1. Inserir - de modo a manter a informação por ordem alfabética de nome. Numa 1ª versão, utilize o algoritmo por trocas directas e, numa 2ª versão, use a inserção ordenada;
                  2. Remover - utilize a pesquisa sequencial ordenada para encontrar o registo a remover;
                  3. Consultar - utilize a pesquisa dicotómica para encontrar o registo a consultar;
                  4. Listar - liste todos os alunos armazenados, por ordem alfabética.
                4. Especifique uma função em C para calcular a média de cada aluno (faça uma função que dada a estrutura de dados principal e o identificador do aluno, produz como resultado a sua média); note que disciplinas não avaliadas não contam para a média (diferente de obter a classificação 0 numa disciplina).
                5. Calcule a média geral da turma.
                6. Calcule a média da turma em cada disciplina.
                7. Calcule a percentagem de faltas (ausência de nota).

                -- PedroRangelHenriques - 29 de Abril, 2005

                Ficha6 20 Mar 2005 - 21:08 - NEW JoseCarlosRamalho

                Ficha Nº6: Busca e Ordenação de Arrays

                Objectivos:

                O objectivo principal desta ficha é familiarizar o aluno com a utilização dos algoritmos tradicionais de busca e ordenação de Arrays.

                Exercícios:

                Exercício Nº1: Inserção Ordenada

                Voltando ao exercício da última ficha em que se geriam alunos e respectivas notas, implemente a operação correspondente à inserção de um novo aluno (faça a inserção ordenada desse aluno). Este problema pode ser dividido em três fases:

                1. Descobrir a posição onde o novo aluno deverá ser inserido;
                2. Deslocar os elementos maiores uma posição para a frente;
                3. Inserir o novo aluno na posição livre.

                Exercício Nº2: Remoção

                Especifique a operação de remoção de um aluno tendo o cuidado de deixar a estrutura ordenada e sem "buracos".

                Exercício Nº3: Busca Dicotómica

                Uma vez que a estrutura está ordenada a pesquisa pode ser optimizada. Implemente a pesquisa dicotómica sobre um array ordenado.

                -- JoseCarlosRamalho - 20 Mar 2005

                Ficha7 29 Apr 2005 - 09:01 - r2 PedroRangelHenriques

                Ficha Nº6: Arrays e Estruturas

                Objectivos:

                O objectivo principal desta ficha é familiarizar o aluno com a utilização de algoritmos mais avançados de busca e ordenação sobre Arrays. No fim, porpõem-se alguns exercícos envolvendo estruturas.

                Exercícios:

                Exercício Nº1: Estrutura Ligada

                Voltando ao exercício da última ficha em que se geriam alunos e respectivas notas, considere a hipótese de utilizar uma ligação lógica entre os elementos como forma de os manter ordenados(como discutido na aula teórica de 01-04-2004) e implemente as seguintes funções:

                1. Incialização do modelo de dados: lembre-se que também será necessário gerir as posições livres.
                2. Listar: esta função produz uma listagem ordenada da informação de todos os alunos.
                3. Consulta: esta função imprime no écran toda a informação referente a um determinado aluno.
                4. Inserir: esta função insere o novo aluno na primeira posição livre e actualiza as ligações de forma a manter a informação logicamente ordenada.
                5. Remover: esta função remove o aluno em causa e coloca a respectiva posição na lista de posições livres (garbage collector).
                Este problema pode ser dividido em três fases:

                Exercício Nº2: Estrutura ou Produto Cartesiano

                Considere de novo o problema do exercício anterior e resolva as seguintes alíneas:

                1. Defina um tipo de dados Aluno como sendo uma estrutura (struct) onde é guardada a informação do aluno.
                2. Defina um tipo de dados Turma como sendo uma lista de Aluno.
                3. Declare variáveis do tipo Aluno e do tipo Turma.
                4. Adapte as funções desenvolvidas no exercício anterior para trabalhar com estes novos tipos de dados.
                Ficha8 29 Apr 2005 - 09:01 - r2 PedroRangelHenriques

                Ficha Nº7: Estruturas de Dados Dinâmicas - Listas Ligadas

                Objectivos:

                O objectivo principal desta ficha é familiarizar o aluno com a utilização de estruturas de dados dinâmicas.

                Exercícios:

                Exercício Nº1: Lista de Inteiros

                Considere uma lista de inteiros (não se sabe o seu comprimento). Especifique então as seguintes funções e estruturas de dados:

                1. Defina os tipos necessários para suportar uma lista ligada de inteiros.
                2. Especifique uma função para inserir um valor na cabeça da lista.
                3. Especifique uma função para listar os valores da lista, do início para o fim (faça também a função que lista os elementos na ordem inversa).
                4. Especifique uma função para procurar um valor na lista (como resultado deverá devolver um apontador para o elemento ou NULL caso não o encontre).
                5. Especifique uma função para contar os elementos da lista.
                6. Especifique uma função para calcular o maior elemento na lista.
                7. Especifique um programa, usando as funções definidas, que cria uma lista com os múltiplos de 3 entre 0 e 100 e os lista por ordem decrescente e crescente.

                Exercício Nº2: À procura da saída ...

                Suponha que existe um labirinto (pense numa representação adequada para o mesmo) que tem um ponto de entrada e um ponto de saída. Especifique um algoritmo que vai descobrir um caminho possível entre o ponto de entrada e o ponto de saída. Ajuda: modele numa lista ligada uma stack para ir guardando o caminho percorrido e as hipóteses alternativas.

                Exercício Nº3: A Agenda de Contactos

                Pretende-se que desenvolva uma aplicação para gerir uma agenda de contactos. Uma agenda é uma lista de entradas ou grupos de entradas. Uma entrada tem a seguinte constituição:

                chave
                chave única de identificação (não pode haver duas entradas com a mesma chave);
                tipo
                tipo da entrada: pessoa, empresa, ...
                nome
                nome da pessoa, empresa ou entidade;
                email
                contacto electrónco (é opcional)
                telefone
                número de telefone (obrigatório)

                Um grupo pode ter entradas, referências a entradas já existentes na agenda (por chave) ou subgrupos (os grupos podem ter grupos aninhados infinitamente). O grupo tem, então, a seguinte constituição:

                chave
                chave única de identificação (não pode haver dois grupos com a mesma chave);
                nome
                nome do grupo; lista de itens: entradas e/ou grupos e/ou referências;

                Por sua vez, a referência é apenas constituída pela chave da entrada ou grupo que referencia.

                Desenvolva a aplicação nas seguintes etapas:

                1. Defina as estruturas de dados necessárias para suportar o sistema de informação;
                2. Espeifique as várias funções de inserção: inserir uma entrada na agenda, inserir um grupo na agenda, inserir uma entrada num grupo, ...
                3. Especifique uma função para listar o conteúdo da agenda.
                4. Especifique uma função para gravar o conteúdo da agenda num ficheiro.
                5. Especifique uma função para carregar o conteúdo da agenda de um ficheiro.
                6. Especifique as várias funções de remoção.

                Divirta-se...

                Ficha8Res 20 Mar 2005 - 21:23 - NEW JoseCarlosRamalho

                Makefile

                prog.exe : prog.o lista.o
                    gcc -o prog.exe prog.o lista.o
                
                prog.o : prog.c lista.h
                    gcc -c prog.c
                
                lista.o : lista.h lista.c
                    gcc -c lista.c
                


                lista.h

                #ifndef _LISTA
                #define _LISTA
                
                typedef struct sInteiro
                  {
                    int valor;
                    struct sInteiro * seg;
                  } Nodo, *Lista;
                
                Lista inserir( int v, Lista l );
                void listar( Lista l );
                void listar_inv( Lista l );
                Lista procurar( int v, Lista l );
                int conta_elems( Lista l );
                
                #endif
                


                lista.c

                #include "lista.h"
                #include <stdio.h>
                
                Lista inserir( int v, Lista l )
                {
                  Lista novo;
                
                  novo = (Lista) malloc(sizeof(Nodo));
                  novo->valor = v;
                  novo->seg = l;
                
                  return novo;
                }
                
                
                void listar( Lista l )
                {
                  if(l)
                  {
                    printf("%d ",l->valor);
                    listar(l->seg);
                  }
                }
                
                Lista inserir_ord( int v, Lista l)
                {
                  Lista novo;
                
                
                  if((!l) || (l->valor > v))
                  {
                    novo = (Lista) malloc(sizeof(Nodo));
                    novo->valor = v;
                    novo->seg = l;
                    return novo;
                  }
                  else
                  {
                    l->seg = inserir_ord(v,l->seg);
                    return l;
                  }
                }
                


                prog.c

                #include <stdio.h>
                #include "lista.h"
                
                int main()
                {
                  Lista li=NULL;
                  int i=0;
                
                  while ((i+=3) < 100)
                    li = inserir(i,li);
                
                  listar(li);
                
                  return 0;
                }
                
                FichasPraticas 29 Apr 2005 - 09:00 - r10 PedroRangelHenriques
                MenuTopics 21 Feb 2005 - 09:33 - NEW AlcinoCunha
                NovasPI 27 Jul 2005 - 10:48 - r18 JoseCarlosRamalho
                27-07-2005
                Resultados Finais após a época de recurso
                22-06-2005
                As notas práticas são, a partir de agora, definitivas.
                TPImagens 29 Mar 2005 - 20:44 - NEW JoseCarlosRamalho
                TrabalhosPratico 20 May 2005 - 11:50 - r4 JoseCarlosRamalho

                Projecto Integrado

                Arquitecturas de Computadores (AC2005)
                e
                Programação Imperativa (PI2005)

                Este documento descreve o único tema disponível para a realização do projecto integrado das disciplinas em epígrafe.

                Os assuntos referentes à organização do trabalho e à realização, entrega e avaliação do projecto, são descritos em regulamento próprio.


                Índice

                1. Objectivos de formação e resultados de aprendizagem
                  1. Tema: Processamento de Imagem
                    1. Formato de Imagem PNM
                      1. PBM: Portable BitMap? Format
                        1. PGM: Portable GrayMap? Format
                          1. PPM: Portable PixMap? Format
                          2. Primeira fase (Fase 1)
                            1. Segunda fase (Fase 2)
                              1. Terceira fase (Fase 3)
                                1. Pautas musicais
                                  1. Músicas populares

                              Objectivos de formação e resultados de aprendizagem

                              [Voltar ao índice]

                              Este projecto tem como objectivos principais a formação genérica e específica de estudantes em fundamentos de computação em áreas de informática afins e interligadas, a programação imperativa e a arquitectura de computadores.

                              Os objectivos de formação genérica incluem: (i) a pesquisa, análise e selecção de informação, (ii) o treino de trabalho de grupo na resolução de problemas, (iii) o desenvolvimento da capacidade de análise e compreensão de textos em língua inglesa, e (iv) o desenvolvimento da capacidade de comunicação escrita e oral.

                              Os objectivos de formação específica incluem: (i) a análise da especificação e do problema, (ii) o desenvolvimento de algoritmos e consequente programação numa linguagem imperativa, (iii) a execução e realização de testes de conformidade, (iv) a análise da execução desses programas numa dada arquitectura de computadores (IA-32), e (v) a aplicação de técnicas de optimização de algoritmos/programas/códigos, com vista a melhorar o desempenho.

                              A avaliação dos resultados esperados de aprendizagem irão verificar se as/os estudantes conseguem demonstrar ter adquirido o seguinte conjunto de competências genéricas e específicas:

                              • competências genéricas

                                • a capacidade de trabalho em grupo e respectiva comunicação efectiva e eficiente entre os elementos do grupo;
                                • a capacidade de comunicação escrita e oral na apresentação e discussão dos processos usados e resultados obtidos;
                                • a capacidade de utilização de utilitários genéricos de informática em ambiente Linux e de elaboração de documentos anotados

                              • competências específicas de Programação Imperativa

                                • a capacidade de desenvolver algoritmos para resolver problemas, de forma criativa, criteriosa e crítica, e inserida/o num grupo de trabalho
                                • o conhecimento e a capacidade de codificar algoritmos e estruturas de dados segundo os princípios da programação estruturada
                                • a capacidade e aptidões práticas para gerar, executar e testar programas codificados em C, usando um conjunto adequado de utilitários (GNU)
                                • o conhecimento e as aptidões de desenvolver e aplicar testes de conformidade e de analisar situações de fronteira na execução de programas
                                • capacidade e aptidões na produção de documentação adequada à manutenção por terceiros dos programas desenvolvidos

                              • competências específicas de Arquitectura de Computadores

                                • a capacidade de pesquisar, seleccionar, analisar e interpretar a informação necessária para completar a especificação inicial do projecto (em língua inglesa, e relacionada com formas de representação de informação) (Fase1);
                                • o conhecimento e a capacidade de identificar e descrever formas de representação binária de informação gráfica (Fase1);
                                • o conhecimento e a capacidade de identificar, compreender e caracterizar as técnicas de codificação de estruturas típicas de controlo e dos métodos de acesso e manipulação de dados estruturados, no processo de compilação de uma linguagem imperativa (gcc) (Fase2);
                                • a aptidão para efectuar a análise de código em assembly e utilizar ferramentas de baixo nível de depuração (gdb) de programas (Fase2);
                                • o conhecimento, a capacidade e a aptidão para a aplicação de técnicas de engenharia inversa a código binário (Fase2);
                                • o conhecimento e a capacidade de identificar e descrever métricas que caracterizem o desempenho da execução dos programas específicos deste trabalho (Fase 3);
                                • aptidões na aplicação de técnicas de análise de desempenho baseadas no profiling de aplicações (Fase 3);
                                • capacidades e aptidões para descrever, aplicar e avaliar técnicas de optimização de desempenho independentes e dependentes da máquina (Fase 3);

                              Tema: Processamento de Imagem

                              [Voltar ao índice]

                              Todos os projectos têm um tema subjacente. O tema escolhido para esta instância lectiva foi o processamento de imagem.

                              No contexto deste projecto, as imagens a processar estarão sempre no formato PNM (Portable aNyMap) que se descreve na secção seguinte.

                              Formato de Imagem PNM

                              [Voltar ao índice]

                              O PNM é um formato de imagem muito simples, fácil de ler a partir de um ficheiro e também fácil de escrever para um ficheiro. Actualmente uma imagem PNM pode pertencer a uma de três famílias, abaixo explicadas: PBM, PGM e PPM. Cada família tem duas

                              representações
                              uma textual e uma compactada.

                              Embora não seja um requisito da especificação PNM, existe a convenção de que a imagem deve ser armazenada de cima para baixo e da esquerda para a direita. Cada pixel da imagem é armazenado num byte, valor 0 = preto, valor 255 = branco. Os componentes de cor são armazenados na ordem habitual RGB ("red", "green" and "blue"), um valor para o nível de vermelho, um valor para o nível de verde e um valor para o nível de azul.

                              PBM: Portable BitMap? Format

                              [Voltar ao índice]

                              Esta família corresponde a imagens contendo apenas duas cores, branco (1) e preto (0), normalmente designadas por bitmaps.

                              A sua forma textual pode ser descrita da seguinte maneira:

                              • qualquer linha iniciada pelo carácter # é um comentário; os comentários só poem aparecer nas linhas do cabeçalho, ou seja, antes dos valores dos pontos da imagem.
                              • a primeira linha contem o identificador do tipo da imagem: P1

                              • a segunda linha contem um par de valores que definem respectivamente o decimal correspondente ao número de colunas (largura da imagem em pixeis), por exemplo: 9, e o decimal correspondente ao número de linhas (altura da imagem em pixeis), por exemplo:

                              • as linhas restantes contêm uma lista de valores decimais, em que cada valor corresponde a um pixel da imagem e estão organizadas de acordo com os valores definidos nas linhas anteriores. Com os exemplos dados nos itens anteriores teríamos 7 linhas cada uma com 9 valores separados por espaço (cada valor corresponde a um byte, 0-255, que no caso das imagens do tipo P1 apenas assume valores no intervalo [0,1])

                              Um exemplo de uma imagem neste formato poderia ser:

                              P1
                              # PBM example 
                              9 7
                               0 0 0 0 0 0 0 0 0 
                               0 1 1 1 1 0 0 1 0 
                               0 1 0 0 1 0 0 1 0 
                               0 1 1 1 1 0 0 1 0
                               0 1 0 0 0 0 0 1 0
                               0 1 0 0 0 0 0 1 0
                               0 0 0 0 0 0 0 0 0
                              

                              Se analisar um pouco a imagem que esta representa um banner com fundo preto e letras a branco. Neste caso, a imagem contem a string "PI". Note também que, para este caso do banner, a primeira linha, a última linha, a primeira e última colunas são pretas e que entre duas letras há duas colunas pretas de separação.

                              A sua forma compactada resulta da constatação de que um byte é uma sequência de 8 0's e 1's. Assim, um byte pode guardar 8 pixeis da imagem. A única alteração ao formato é o identificador que passa a: P4.

                              A seguir apresenta-se o exemplo anterior agora compactado:

                              P4
                              # PBM example 
                              9 7
                              0 0
                              121 0
                              73 0
                              121 0
                              65 0
                              65 0
                              0 0 
                              

                              Note que, apenas para efeitos de visualização, introduziram-se espaços entre os valores da forma compactada. Nas formas compactadas PNM, não há espaços de separação entre os valores. A informação é guardada em ficheiro em bytes sequenciais.

                              PGM: Portable GrayMap? Format

                              [Voltar ao índice]

                              Esta família corresponde a imagens definidas com vários níveis de cinzento.

                              A sua forma textual pode ser descrita da seguinte maneira:

                              • qualquer linha iniciada pelo carácter # corresponde a um comentário e deverá ser ignorada.
                              • a primeira linha contem o identificador do tipo da imagem: P2

                              • a segunda linha contem um par de valores que definem respectivamente o decimal correspondente ao número de colunas (largura da imagem em pixeis), por exemplo: 9, e o decimal correspondente ao número de linhas (altura da imagem em pixeis), por exemplo:

                              • a terceira linha contem o maior valor decimal que é possível encontrar para a definição de um pixel: [0,65536] (2 elevado a 16), vamos designá-lo por MAX. Normalmente, tenta-se que o intervalo seja [0,255] pois apenas nesta situação se pode falar em compactação e no formato P5. Se MAX estiver no intervalo [0,255] é utilizado apenas um byte por cada pixel da imagem. Caso contrário, MAX esteja no intervalo [256,65535], são utilizados dois bytes por cada pixel da imagem; o byte mais significativo aparece primeiro.
                              • as linhas restantes contêm uma lista de valores decimais, em que cada valor corresponde a um pixel da imagem e estão organizadas de acordo com os valores definidos nas linhas anteriores. Com os exemplos dados nos itens anteriores teríamos 7 linhas cada uma com 9 valores separados por espaço (cada valor corresponde a um pixel: 0-MAX).
                              • cada linha não deverá ter mais de 70 valores.
                              • o valor 0 corresponde à cor preta e o valor MAX corresponde à cor branca.

                              Um exemplo de uma imagem neste formato poderia ser:

                              P2
                              # PBM example 
                              9 7
                              15
                               0 0 0 0 0 0 0 0 0 
                               0 15 15 15 15 0 0 12 0 
                               0 15 0 0 15 0 0 12 0 
                               0 15 15 15 15 0 0 12 0
                               0 15 0 0 0 0 0 12 0
                               0 15 0 0 0 0 0 12 0
                               0 0 0 0 0 0 0 0 0
                              

                              Se analisar um pouco a imagem que esta representa um banner com fundo preto e letras a branco. Neste caso, a imagem contém a string "PI". Note também que, para este caso do banner, a primeira linha, a última linha, a primeira e última colunas são pretas e que entre duas letras há duas colunas pretas de separação.

                              A sua forma compactada resulta da eliminação dos espaços nas linhas da imagem e apenas para o caso em que MAX está no intervalo [0,255]. A única alteração ao formato é o identificador que passa a: P5.

                              PPM: Portable PixMap? Format

                              [Voltar ao índice]

                              Esta secção ficará em branco. Espera-se que os alunos "investiguem" e que a preencham um pouco à semelhança das outras.

                              Nas secções seguintes descrevem-se as diferentes fases do projecto e referem-se os requisitos que serão avaliados. Cada requisito está devidamente identificado e poderá será avaliado apenas numa das disciplinas.

                              Primeira fase (Fase 1)

                              [Voltar ao índice]

                              Nesta fase, pretende-se que as/os estudantes executem as seguintes tarefas:

                              • pesquisar a Web para caracterizar sucintamente os formatos de imagem JPEG e GIF (avaliação exclusiva de AC), e para completar o enunciado na descrição do formato PPM;
                              • procurar na Web produtos que, em ambiente Linux (preferencial) convertam ficheiros de imagem/gráficos em formato JPEG ou GIF para um dos formatos PNM (PBM, PGM ou PPM), e testar pelo menos um dos produtos que satisfaça os requisitos (avaliação exclusiva de AC)";
                              • desenvolver um conjunto de algoritmos elementares para transformar imagens PNM; mais concretamente, seguindo a descrição feita na secção anterior pretende-se transformar imagens do tipo P2, P3, P5 e P6 em imagens do tipo P1 ou P4 (avaliação exclusiva de PI);
                              • codificar os algoritmos propostos, documentando-os adequadamente (avaliação exclusiva de PI);
                              • preparar um conjunto de ficheiros de entrada para teste, que permita validar, além de outras, as de condições limite (avaliação exclusiva de PI);
                              • criar programas executáveis, usando o ambiente de desenvolvimento da GNU, e seleccionando o nível de optimização -O2 ;
                              • integrar e testar o produto final (da Fase 1) usando comandos da shell para (i) leitura de um ficheiro JPEG ou GIF e sua conversão para PNM, (ii) leitura de um ficheiro PNM (P2, P3, P5 ou P6) e sua conversão para noutro ficheiro PNM (P1 ou P4) e (iii) visualização da imagem usando ImageMagick? (avaliação exclusiva de PI);
                              • refinar o interface com o utilizador, construindo um menu de operações e permitindo mais que uma operação em cada sessão (avaliação exclusiva de PI);
                              • apresentar os resultados destas tarefas num relatório redigido em LaTeX? ; a sua estrutura deverá conter, para além do título e lista de autores, um resumo (máx. 600 caracteres), uma introdução com caracterização do problema a resolver, uma breve exposição/relato dos aspectos relevantes de cada uma das fases/tarefas, as conclusões, uma lista da bibliografia pertinente para a resolução do trabalho, e, em anexo, uma listagem do código.

                              A título de curiosidade, apresentam-se algumas das operações que se poderão oferecer ao utilizador (se tiver tempo utilize a sua imaginação para criar mais):

                              1. Compactar P1 em P4
                              2. Descompactar P4 em P1
                              3. Binarizar P2 em P1
                              4. Binarizar P3 em P1
                              5. Descompactar e Binarizar P5 em P1
                              6. Descompactar e Binarizar P6 em P1

                              Segunda fase (Fase 2)

                              [Voltar ao índice]

                              Nesta fase, pretende-se que as/os estudantes executem as seguintes tarefas:

                              1. Corrigir e/ou completar as tarefas solicitadas na 1ª fase e que não foram realizadas, ou foram-no de modo menos correcto ou adequado; estas incluem: (i) a produção de textos sobre JPEG/GIF/PPM, (ii) a selecção/teste de conversores JPEG/GIF para PNM (PBM, PGM ou PPM), (iii) o desenvolvimento dos algoritmos e respectiva codificação, teste e integração (com os comentários pertinentes) na transformação de imagens do tipo P2, P3, P5 e P6 em imagens do tipo P1 ou P4 , e (iv) a produção de um texto em LaTeX? para posterior integração no relatório da 2ª fase e respectiva compilação para PDF.
                              2. Desenvolver um conjunto adicional de algoritmos para: (i) efectuar sobre imagens PNM as operações de rodar, negativo, média-vizinhos e binarização-adaptativa (opcional), em que a descrição destas operações se encontra a seguir; e (ii) procurar os objectos contidos numa imagem colorindo-os com cores diferentes, à medida que os encontra (esta operação é apenas para imagens P1 e o resultado deverá ser uma imagem P3), de acordo com as indicações dadas no fim. Do ponto de vista de interface com o utilizador, esta novas operações solicitadas devem ser integradas com as conversões iniciais no menu de opções da Fase 1, permitindo mais que uma operação em cada sessão (avaliação exclusiva de PI).
                              3. Codificar os algoritmos propostos, comentando-os e documentando-os adequadamente (avaliação exclusiva de PI).
                              4. Criar programas executáveis, usando o ambiente de desenvolvimento da GNU, e seleccionando o nível de optimização -O2.
                              5. Preparar um conjunto de ficheiros de entrada para teste dos algoritmos/código das funções solicitadas, que permita validar, além de outras, as condições limite (avaliação exclusiva de PI).
                              6. Analisar o código assembly produzido pelo gcc no processo de compilação (apenas) do código C de uma das funções pedidas (média-vizinhos, no formato P5), dedicando uma secção do relatório a esta análise, com a seguinte informação: (i) apresentação do código em assembly, claramente identificando o corpo da função e as componentes de arranque e término da função, e incluindo comentários no corpo da função semelhantes a código C; (ii) identificação dos registos e/ou células de memória onde foram alocadas as variáveis locais da função; (iii) apresentação da estrutura e conteúdo da stack frame no início da execução do corpo da função; algumas destas tarefas deverão também ser executadas durante a defesa do trabalho (avaliação exclusiva de AC).
                              7. Efectuar o reverse engineering de uma função que converte uma imagem P5 noutra P5, modificada: dado o executável obter uma possível versão do código da função em C, estruturada de uma forma correcta e elegante (avaliação exclusiva de AC).
                              8. Integrar e testar o produto final (da Fase 2) usando comandos da shell para (i) leitura de um ficheiro JPEG ou GIF e sua conversão para PNM, (ii) leitura de um ficheiro PNM e aplicação de uma das operações pedidas, gerando um outro ficheiro PNM e (iii) visualização da imagem usando ImageMagick? (avaliação exclusiva de PI).
                              9. Apresentar os resultados destas tarefas num relatório redigido em LaTeX? (que terá de ser submetido já compilado para PDF, num ficheiro cujo nome contém a indicação de "Fase2" seguido da identificação do grupo (por ex., "Fase2-3.15")); a estrutura do relatório deverá ser idêntica à solicitada na Fase 1 ("conter, para além do título e lista de autores, um resumo (máx. 600 caracteres), uma introdução com caracterização do problema a resolver, uma breve exposição/relato dos aspectos relevantes de cada uma das fases/tarefas, as conclusões, uma lista da bibliografia pertinente para a resolução do trabalho, e, em anexo, uma listagem do código") e deverá incluir uma versão reformulada/corrigida/completa do relatório da Fase 1.
                              10. Preparar uma apresentação oral do trabalho de grupo feito até à data, (sem slides!) que não deverá ocupar mais de 5 min do tempo de defesa do trabalho.

                              Detalhe das operações de manipulação de imagem acima referidos (para PI):

                              rodar()

                              a imagem é rodada 90 graus para a direita.

                              negativo()

                              o valor dos pixeis da imagem é invertido de acordo com a fórmula: MAX - valor_corrente

                              media-vizinhos(nvizinhos)

                              cada pixel da imagem vai tomar um novo valor que será igual à média dos valores dos seus nvizinhos vizinhos, de acordo com a seguinte interpretação: nvizinhos=2 inclui os vizinhos da esquerda e direita; nvizinhos=4 inclui os vizinhos da esquerda, direita, cima e baixo; e nvizinhos=8 inclui os vizinhos anteriores e ainda os quatro das diagonais.

                              bin-adapt()

                              esta operação será opcional e consiste em criar uma nova versão das conversões para P1; em vez de se considerar o valor médio (Max/2) como o valor de threshold para a binarização, considere-se o valor médio da diferença entre o valor máximo e a média dos pixeis da imagem ((Max-Média)/2).

                              Relativamente à procura de objectos em imagens a preto-e-branco e sua coloração, os objectos a procurar são pixeis contíguos (horizontal, vertical ou diagonalmente) com o mesmo valor, e podem ser pontos, linhas ou áreas; por exemplo, se se considerar uma imagem P1 com as letras "PI" em cima, o resultado seria uma P3 com o "P" a uma cor (azul, por exemplo) e o "I" a outra cor (vermelho, por exemplo).

                              Terceira fase (Fase 3)

                              [Voltar ao índice]

                              Relativamente à componente de Programação Imperativa e tendo em atenção o estado em que os trabalhos se encontram, após a segunda avaliação, foi decidido que a terceira fase será opcional e só deverá ser realizada pelos grupos que cumpriram integralmente os requisitos até ao momento e que querem obter uma classificação num dos últimos escalões (Muito Bom, Excelente).

                              Assim, e para grande maioria dos grupos, pede-se que implementem os requisitos das fases 1 e 2. Os restantes terão de desenvolver a aplicação cujos requisitos se apresentam a seguir.

                              Pautas musicais

                              [Voltar ao índice]

                              Desenvolve uma aplicação para a geração automática de pautas musicais coloridas. O programa deverá aceitar um ficheiro de texto com a descrição textual de uma música e deverá gerar uma imagem P3 ou P6 com a respectiva pauta musical.

                              Os requisitos para a aplicação são os seguintes:

                              1. O desenho da pauta fica ao teu critério: espessura das linhas, dimensões das notas, ...
                              2. Uma pauta é constituída por cinco linhas horizontais espaçadas uniformemente. As notas colocam-se sobre as linhas ou nos espaços entre elas.
                              3. Uma música é constituída por uma lista de compassos. Cada compasso deverá ser separado do seguinte por uma linha vertical de espessura ligeiramente inferior à das linhas da pauta.
                              4. A cor das notas não é livre e deverá seguir o seguinte esquema:

                                Nota Musical Descrição Côr RGB em Hex
                                C FF0000
                                C# ou Db Dó sustenido ou Ré bemol FF3300
                                D FF6600
                                D# ou Eb Ré sustenido ou Mi bemol FFCC00
                                E Mi FFFF33
                                F 00FF00
                                F# ou Gb Fá sustenido ou Sol bemol 00AA00
                                G Sol 004400
                                G# ou Ab Sol sustenido ou Lá bemol 0000FF
                                A 330033
                                A# ou Bb Lá sustenido ou Si bemol 990066
                                B Si FF0066
                                CM Dó maior FF0000

                              5. O ficheiro de entrada, onde é descrita a música em forma textual, tem a seguinte estrutura:

                                • Na primeira linha tem o título da música.
                                • Cada linha das que se seguem à primeira contem um compasso da música.
                                • Numa linha de compasso cada nota é separada da que se lhe segue por um espaço.
                                • Além de notas podem aparecer pausas e sinais de repetição (o tratmento destes é opcional).
                                • A título de exemplo, apresenta-se a seguir a descrição de uma música popular portuguesa bem conhecida:

                                  O Chapéu de 3 bicos
                                  G
                                  CM G
                                  G F E
                                  F D
                                  D E
                                  F F G
                                  A G
                                  E
                                  Pausa
                                  G CM G G
                                  F E F D
                                  D E F
                                  G A G C
                                  Repete
                                • O resultado esperado para o exemplo anterior pode ser visualizado em: O Chapéu de 3 bicos.

                              A seguir apresentam-se mais músicas para teste da aplicação final.

                              Músicas populares

                              [Voltar ao índice]

                              • O lencinho
                                O lencinho
                                G A
                                G E
                                C G A
                                G E
                                C C C
                                D D C D
                                E E D E
                                F F E F
                                G G A
                                G E
                                C G A
                                G E
                                C C C
                                D D C D
                                E F G A
                                G F E D
                                C C
                                E F
                                G
                                Pausa E F
                                G
                                Pausa A Bb
                                CM
                                Pausa A Bb
                                CM
                                Pausa C C 
                                C C Bb A
                                G G G A
                                G F E D 
                                C C
                                Repete
                              • Dança das Horas: nesta música existem acordes (notas que devem ser tocadas ao mesmo tempo); um acorde tem parentesis curvos a limitar as suas notas; as notas de um acorde devem ser desenhadas alinhadas verticalmente, ou seja, o centro do círculo de cada nota deve estar sobre a mesma linha vertical; o tratamento de acordes é um extra.
                                Dança das Horas
                                A
                                F G
                                C
                                C
                                G A
                                F
                                F A
                                G F
                                C
                                C C
                                G A
                                F
                                F Pausa
                                (F A)
                                (F A)
                                (F A)
                                Pausa C
                                F
                              • O balão do João
                                O balão do João
                                G E E
                                F D D
                                C D E F
                                G G G
                                G E E
                                F D D
                                C E G G
                                (G C E)
                                Repete
                                D D D D
                                D E F
                                E E E E 
                                E F G
                                G E E
                                F D D
                                C E G G
                                (G C E)
                                Repete
                              • Lagarto Pintado
                                Lagarto Pintado
                                C
                                G CM G
                                E C
                                A A A
                                A G
                                G CM G
                                E C
                                F E D
                                C
                                Repete

                              WebChanges 16 Aug 2001 - 19:58 - NEW PeterThoeny?

                              50 Recent Changes in TWiki Web retrieved at 17:42 (GMT)

                              WebHome 12 Feb 2007 - 19:53 - r14 JoseBacelarAlmeida
                              Programação Imperativa 1ºano da LMCC2004/2005 Equipe Docente: Carlos Ramalho, Rangel Henriques, Personal.Nuno Rodrigues Novidades ...
                              WebStatistics 10 Feb 2007 - 12:25 - r328 TWikiGuest
                              Statistics for Education/ProgramacaoImperativa Web Month: Topic views: Topic saves: File uploads: Most popular topic views: Top contributors ...
                              NovasPI 27 Jul 2005 - 10:48 - r18 JoseCarlosRamalho
                              $ 27 07 2005: Finais após a época de recurso $ 22 06 2005: As notas práticas são, a partir de agora, definitivas.
                              TrabalhosPratico 20 May 2005 - 11:50 - r4 JoseCarlosRamalho
                              Projecto Integrado Arquitecturas de Computadores (AC2005) e Programa o Imperativa (PI2005) ...
                              Ficha8 29 Apr 2005 - 09:01 - r2 PedroRangelHenriques
                              Ficha Nº7: Estruturas de Dados Dinâmicas Listas Ligadas Objectivos: O objectivo principal desta ficha é familiarizar o aluno com a utilização de estruturas de dados ...
                              Ficha7 29 Apr 2005 - 09:01 - r2 PedroRangelHenriques
                              Ficha Nº6: Arrays e Estruturas Objectivos: O objectivo principal desta ficha é familiarizar o aluno com a utilização de algoritmos mais avançados de busca e ordena ...
                              FichasPraticas 29 Apr 2005 - 09:00 - r10 PedroRangelHenriques
                              para Submissão de Fichas Práticas e de Trabalhos Práticos Ficha 1, Ambientação ao unix e utilização de algumas ferramentas: gcc, vi, make, latex. (em PDF, em ...
                              Ficha5 29 Apr 2005 - 08:56 - r6 PedroRangelHenriques
                              Ficha Nº5 Objectivos: O objectivo principal desta ficha é consolidar os conhecimentos sobre manipulação de arrays em C expandindo para a manipulação de arrays multidimensionais ...
                              WebPreferences 20 Apr 2005 - 08:37 - r13 JoseCarlosRamalho
                              Education/ProgramacaoImperativa Web Preferences The following settings are web preferences of the Education/ProgramacaoImperativa web. These preferences overwrite ...
                              Fase1Aval 31 Mar 2005 - 12:54 - NEW JoseCarlosRamalho
                              COMUNICADO Neste momento, está a ser preparado um documento que será subscrito por todos os docentes envolvidos e que faz uma análise ao que aconteceu ontem e que ...
                              Comunicado_F1 30 Mar 2005 - 20:20 - NEW JoseCarlosRamalho
                              COMUNICADO Caros colegas e alunos, depois dos acontecimentos ocorridos no dia de hoje e que foram as entregas e defesas da fase 1 do Projecto Integrado achei que devia ...
                              TPImagens 29 Mar 2005 - 20:44 - NEW JoseCarlosRamalho
                              circle2.pbm: Círculo circle.pbm: Círculo Imagem JPG: pote de cerâmica: image007.pbm: O pote no formato PBM image007.ppm: O pote no formato ...
                              Ficha8Res 20 Mar 2005 - 21:23 - NEW JoseCarlosRamalho
                              Makefile prog.exe : prog.o lista.o gcc o prog.exe prog.o lista.o prog.o : prog.c lista.h gcc c prog.c lista.o : lista.h lista.c gcc c lista.c lista ...
                              Ficha4 20 Mar 2005 - 21:12 - r2 JoseCarlosRamalho
                              Ficha Nº4 Objectivos: O objectivo principal desta ficha é familiarizar o aluno com a utilização e manipulação de vectores e matrizes em C. As strings são casos ...
                              Ficha6 20 Mar 2005 - 21:08 - NEW JoseCarlosRamalho
                              Ficha Nº6: Busca e Ordenação de Arrays Objectivos: O objectivo principal desta ficha é familiarizar o aluno com a utilização dos algoritmos tradicionais de busca ...
                              Ficha3 13 Mar 2005 - 10:45 - r2 JoseCarlosRamalho
                              Ficha Nº3 Objectivos: O objectivo principal desta ficha é familiarizar o aluno com a codificação de algoritmos um pouco mais complexos alguns deles envolvendo ...
                              Ficha2 03 Mar 2005 - 11:27 - r2 JoseCarlosRamalho
                              Ficha Nº2 Objectivos: O objectivo principal desta ficha é familiarizar o aluno com a linguagem algorítmica que irá ser usada para especificar os algoritmos ...
                              Ficha1 24 Feb 2005 - 15:46 - r2 JoseCarlosRamalho
                              Funcionamento das aulas Teórico Práticas e Práticas As aulas teórico práticas da diciplina Programação Imperativa são baseadas na realização de uma ficha teórico pr ...
                              MenuTopics 21 Feb 2005 - 09:33 - NEW AlcinoCunha
                              WebNotify 28 Aug 2004 - 07:30 - r4 PeterThoeny?
                              This is a subscription service to be automatically notified by e mail when topics change in this Education/ProgramacaoImperativa web. This is a convenient service ...
                              WebLeftBar 16 Aug 2004 - 05:52 - NEW ArthurClemens?
                              Web Web Home Changes Index Search Webs
                              WebRss 16 Aug 2004 - 03:27 - r2 PeterThoeny?
                              TWiki's Education/ProgramacaoImperativa web /view/Education/ProgramacaoImperativa The Education/ProgramacaoImperativa web of TWiki. TWiki is a Web Based Collaboration ...
                              WebSearchAdvanced 18 Jan 2004 - 10:52 - NEW PeterThoeny?
                              WebIndex 24 Nov 2001 - 11:41 - r2 PeterThoeny?
                              See also the faster WebTopicList
                              WebTopicList 24 Nov 2001 - 11:40 - NEW PeterThoeny?
                              See also the verbose WebIndex.
                              WebChanges 16 Aug 2001 - 19:58 - NEW PeterThoeny?
                              WebSearch 08 Aug 2001 - 05:26 - NEW PeterThoeny?
                              Found 27 topics.

                              See also: rss-small RSS feed, recent changes with 50, 100, 200, 500, 1000 topics, all changes

                              WebHome 12 Feb 2007 - 19:53 - r14 JoseBacelarAlmeida

                              largo_paco_sec_XVI.jpg


                              Novidades

                              27-07-2005
                              Resultados Finais após a época de recurso
                              22-06-2005
                              As notas práticas são, a partir de agora, definitivas.

                              WebIndex 24 Nov 2001 - 11:41 - r2 PeterThoeny?
                              Education/ProgramacaoImperativa Web Changed Changed by
                              Comunicado_F1 30 Mar 2005 - 20:20 - NEW JoseCarlosRamalho
                              COMUNICADO Caros colegas e alunos, depois dos acontecimentos ocorridos no dia de hoje e que foram as entregas e defesas da fase 1 do Projecto Integrado achei que devia ...
                              Fase1Aval 31 Mar 2005 - 12:54 - NEW JoseCarlosRamalho
                              COMUNICADO Neste momento, está a ser preparado um documento que será subscrito por todos os docentes envolvidos e que faz uma análise ao que aconteceu ontem e que ...
                              Ficha1 24 Feb 2005 - 15:46 - r2 JoseCarlosRamalho
                              Funcionamento das aulas Teórico Práticas e Práticas As aulas teórico práticas da diciplina Programação Imperativa são baseadas na realização de uma ficha teórico pr ...
                              Ficha2 03 Mar 2005 - 11:27 - r2 JoseCarlosRamalho
                              Ficha Nº2 Objectivos: O objectivo principal desta ficha é familiarizar o aluno com a linguagem algorítmica que irá ser usada para especificar os algoritmos ...
                              Ficha3 13 Mar 2005 - 10:45 - r2 JoseCarlosRamalho
                              Ficha Nº3 Objectivos: O objectivo principal desta ficha é familiarizar o aluno com a codificação de algoritmos um pouco mais complexos alguns deles envolvendo ...
                              Ficha4 20 Mar 2005 - 21:12 - r2 JoseCarlosRamalho
                              Ficha Nº4 Objectivos: O objectivo principal desta ficha é familiarizar o aluno com a utilização e manipulação de vectores e matrizes em C. As strings são casos ...
                              Ficha5 29 Apr 2005 - 08:56 - r6 PedroRangelHenriques
                              Ficha Nº5 Objectivos: O objectivo principal desta ficha é consolidar os conhecimentos sobre manipulação de arrays em C expandindo para a manipulação de arrays multidimensionais ...
                              Ficha6 20 Mar 2005 - 21:08 - NEW JoseCarlosRamalho
                              Ficha Nº6: Busca e Ordenação de Arrays Objectivos: O objectivo principal desta ficha é familiarizar o aluno com a utilização dos algoritmos tradicionais de busca ...
                              Ficha7 29 Apr 2005 - 09:01 - r2 PedroRangelHenriques
                              Ficha Nº6: Arrays e Estruturas Objectivos: O objectivo principal desta ficha é familiarizar o aluno com a utilização de algoritmos mais avançados de busca e ordena ...
                              Ficha8 29 Apr 2005 - 09:01 - r2 PedroRangelHenriques
                              Ficha Nº7: Estruturas de Dados Dinâmicas Listas Ligadas Objectivos: O objectivo principal desta ficha é familiarizar o aluno com a utilização de estruturas de dados ...
                              Ficha8Res 20 Mar 2005 - 21:23 - NEW JoseCarlosRamalho
                              Makefile prog.exe : prog.o lista.o gcc o prog.exe prog.o lista.o prog.o : prog.c lista.h gcc c prog.c lista.o : lista.h lista.c gcc c lista.c lista ...
                              FichasPraticas 29 Apr 2005 - 09:00 - r10 PedroRangelHenriques
                              para Submissão de Fichas Práticas e de Trabalhos Práticos Ficha 1, Ambientação ao unix e utilização de algumas ferramentas: gcc, vi, make, latex. (em PDF, em ...
                              MenuTopics 21 Feb 2005 - 09:33 - NEW AlcinoCunha
                              NovasPI 27 Jul 2005 - 10:48 - r18 JoseCarlosRamalho
                              $ 27 07 2005: Finais após a época de recurso $ 22 06 2005: As notas práticas são, a partir de agora, definitivas.
                              TPImagens 29 Mar 2005 - 20:44 - NEW JoseCarlosRamalho
                              circle2.pbm: Círculo circle.pbm: Círculo Imagem JPG: pote de cerâmica: image007.pbm: O pote no formato PBM image007.ppm: O pote no formato ...
                              TrabalhosPratico 20 May 2005 - 11:50 - r4 JoseCarlosRamalho
                              Projecto Integrado Arquitecturas de Computadores (AC2005) e Programa o Imperativa (PI2005) ...
                              WebChanges 16 Aug 2001 - 19:58 - NEW PeterThoeny?
                              WebHome 12 Feb 2007 - 19:53 - r14 JoseBacelarAlmeida
                              Programação Imperativa 1ºano da LMCC2004/2005 Equipe Docente: Carlos Ramalho, Rangel Henriques, Personal.Nuno Rodrigues Novidades ...
                              WebIndex 24 Nov 2001 - 11:41 - r2 PeterThoeny?
                              See also the faster WebTopicList
                              WebLeftBar 16 Aug 2004 - 05:52 - NEW ArthurClemens?
                              Web Web Home Changes Index Search Webs
                              WebNotify 28 Aug 2004 - 07:30 - r4 PeterThoeny?
                              This is a subscription service to be automatically notified by e mail when topics change in this Education/ProgramacaoImperativa web. This is a convenient service ...
                              WebPreferences 20 Apr 2005 - 08:37 - r13 JoseCarlosRamalho
                              Education/ProgramacaoImperativa Web Preferences The following settings are web preferences of the Education/ProgramacaoImperativa web. These preferences overwrite ...
                              WebRss 16 Aug 2004 - 03:27 - r2 PeterThoeny?
                              TWiki's Education/ProgramacaoImperativa web /view/Education/ProgramacaoImperativa The Education/ProgramacaoImperativa web of TWiki. TWiki is a Web Based Collaboration ...
                              WebSearch 08 Aug 2001 - 05:26 - NEW PeterThoeny?
                              WebSearchAdvanced 18 Jan 2004 - 10:52 - NEW PeterThoeny?
                              WebStatistics 10 Feb 2007 - 12:25 - r328 TWikiGuest
                              Statistics for Education/ProgramacaoImperativa Web Month: Topic views: Topic saves: File uploads: Most popular topic views: Top contributors ...
                              WebTopicList 24 Nov 2001 - 11:40 - NEW PeterThoeny?
                              See also the verbose WebIndex.
                              Found 27 topics.

                              See also the faster WebTopicList

                              WebLeftBar 16 Aug 2004 - 05:52 - NEW ArthurClemens?

                              WebNotify 28 Aug 2004 - 07:30 - r4 PeterThoeny?
                              This is a subscription service to be automatically notified by e-mail when topics change in this Education/ProgramacaoImperativa web. This is a convenient service, so you do not have to come back and check all the time if something has changed. To subscribe, please add a bullet with your WikiName in alphabetical order to this list:

                              Web Changes Notification Service

                              Each TWiki web has an automatic e-mail notification service that sends you an e-mail with links to all of the topics modified since the last alert.

                              Users subscribe to email notifications using their WikiName or an alternative email address, and can specify the webs/topics they wish to track using one of these bullet list formats:

                              three spaces * [ webname . ] wikiName - SMTP mail address
                              three spaces * [ webName . ] wikiName
                              three spaces * SMTP mail address
                              three spaces * SMTP mail address : topics
                              three spaces * [ webname . ] wikiName : topics

                              In the above examples, topics is a space-separated list of topic names. The user may further customize the specific content they will receive using the following formats:

                              • Specify topics without a Web. prefix
                              • Topics must exist in this web.
                              • Topics may be specified using * wildcards
                              • Each topic may optionally be preceded by a '+' or '-' sign. The '+' sign means "subscribe to this topic" (the same as not putting anything). The '-' sign means "unsubscribe" or "don't send notifications regarding this topic". This allows users to elect to filter out certain topics (and their children, to an arbitrary depth). Topic filters ('-') take precedence over topic includes ('+').
                              • Each topic may optionally be followed by an integer in parentheses, indicating the depth of the tree of children below that topic. Changes in all these children will be detected and reported along with changes to the topic itself. Note This uses the TWiki "Topic parent" feature.
                              • Each topic may optionally be immediately followed by an exclamation mark ! or a question mark ? with no intervening spaces, indicating that the topic (and children if there is a tree depth specifier as well) should be mailed out as complete topics instead of change summaries. ! causes the topic to be mailed every time even if there have been no changes, ? will mail the topic only if there have been changes to it. This only makes sense for subscriptions.

                              For example: Subscribe Daisy to all changes to topics in this web.

                                 * daisy.cutter@flowers.com
                              
                              Subscribe Daisy to all changes in all webs that start with Web.
                                 * daisy.cutter@flowers.com: Web*
                              
                              Subscribe Daisy to changes to topics starting with Petal, and their immediate children, WeedKillers and children to a depth of 3, and all topics that match start with Pretty and end with Flowers e.g. PrettyPinkFlowers
                                 * TWiki.DaisyCutter: Petal* (1) TWiki.WeedKillers (3) Pretty*Flowers
                              
                              Subscribe StarTrekFan to changes to all topics that start with Star except those that end in Wars, sInTheirEyes or shipTroopers.
                                 * TWiki.StarTrekFan: Star* - *Wars - *sInTheirEyes - *shipTroopers
                              
                              Subscribe Daisy to the full content of NewsLetter whenever it has changed
                                 * daisy@flowers.com: TWiki.NewsLetter?
                              
                              Subscribe buttercup to NewsLetter and its immediate children, even if it hasn't changed.
                                 * buttercup@flowers.com: TWiki.NewsLetter! (1)
                              
                              Subscribe GardenGroup (which includes Petunia) to all changed topics under AllnewsLetters to a depth of 3. Then unsubscribe Petunia from the ManureNewsLetter, which she would normally get as a member of GardenGroup? :
                                 * TWiki.GardenGroup: TWiki.AllNewsLetters? (3)
                                 * petunia@flowers.com: - TWiki.ManureNewsLetter
                              
                              A user may be listed many times in the WebNotify topic. Where a user has several lines in WebNotify that all match the same topic, they will only be notified about changes that topic once (though they will still receive individual mails for news topics).

                              If a TWiki group is listed for notification, the group will be recursively expanded to the e-mail addresses of all members.

                              TIP Tip: List names in alphabetical order to make it easier to find the names.

                              Note for System Administrators: Notification is supported by an add-on to the TWiki kernel called the MailerContrib. See the MailerContrib topic for details of how to set up this service.

                              Note: If you prefer a news feed, point your reader to WebRss (for RSS 1.0 feeds) or WebAtom? (for ATOM 1.0 feeds). Learn more at WebRssBase and WebAtomBase, respectively.

                              Related topics: WebChangesAlert, TWikiUsers, TWikiRegistration

                              WebPreferences 20 Apr 2005 - 08:37 - r13 JoseCarlosRamalho

                              Education/ProgramacaoImperativa Web Preferences

                              The following settings are web preferences of the Education.ProgramacaoImperativa web. These preferences overwrite the site-level preferences in TWikiPreferences, and can be overwritten by user preferences (your personal topic, eg: TWikiGuest in the Main web).

                              Preferences:

                              • Set WEBTITLE = Programação Imperativa

                              • List of topics of the TWiki.Education/ProgramacaoImperativa web:

                              • Web specific background color: (Pick a lighter one of the StandardColors)
                                • Set WEBBGCOLOR = #00CCCC

                              • List this web in the SiteMap:
                                • If yes, set SITEMAPLIST to on, do not set NOSEARCHALL, and add the "what" and "use to..." description for the site map. Make sure to list only links that include the name of the web, e.g. Education/ProgramacaoImperativa.Topic links.
                                • Set SITEMAPLIST = on
                                • Set SITEMAPWHAT =
                                • Set SITEMAPUSETO = ...collaborate on

                              • Exclude web from a web="all" search: (Set to on for hidden webs)
                                • Set NOSEARCHALL =

                              • Prevent automatic linking of WikiWords and acronyms (if set to on); link WikiWords (if empty); can be overwritten by web preferences:
                                • Set NOAUTOLINK =
                                • Note: Use the [[...][...]] syntax to link topics in case you disabled WikiWord linking. The <noautolink> ... </noautolink> syntax can be used to prevents links within a block of text.

                              • Default template for new topics and form(s) for this web:
                                • WebTopicEditTemplate? : Default template for new topics in this web. (Site-level is used if topic does not exist)
                                • TWiki.WebTopicEditTemplate: Site-level default template
                                • TWikiForms: How to enable form(s)
                                • Set WEBFORMS =

                              • Web preferences that are not allowed to be overridden by user preferences:
                                • Set FINALPREFERENCES = NOSEARCHALL, ATTACHFILESIZELIMIT, WIKIWEBMASTER, WEBCOPYRIGHT, WEBTOPICLIST, DENYWEBVIEW, ALLOWWEBVIEW, DENYWEBCHANGE, ALLOWWEBCHANGE, DENYWEBRENAME, ALLOWWEBRENAME

                              Notes:

                              • A preference is defined as:
                                6 spaces * Set NAME = value
                                Example:
                                • Set WEBBGCOLOR = #FFFFC0
                              • Preferences are used as TWikiVariables by enclosing the name in percent signs. Example:
                                • When you write variable %WEBBGCOLOR% , it gets expanded to #00CCCC .
                              • The sequential order of the preference settings is significant. Define preferences that use other preferences first, i.e. set WEBCOPYRIGHT before WIKIWEBMASTER since %WEBCOPYRIGHT% uses the %WIKIWEBMASTER% variable.
                              • You can introduce new preferences variables and use them in your topics and templates. There is no need to change the TWiki engine (Perl scripts).

                              Related Topics:

                              WebRss 16 Aug 2004 - 03:27 - r2 PeterThoeny?
                              TWiki's Education/ProgramacaoImperativa web http://wiki.di.uminho.pt/twiki/bin/view/Education/ProgramacaoImperativa The Education/ProgramacaoImperativa web of TWiki. TWiki is a Web-Based Collaboration Platform for the Corporate World. en-us Copyright 2020 by contributing authors TWiki Administrator [webmaster@di.uminho.pt] The contributing authors of TWiki TWiki DIUM.Education/ProgramacaoImperativa http://wiki.di.uminho.pt/twiki/bin/view/Education/ProgramacaoImperativa /twiki/pub/Main/LocalLogos/um_eengP.jpg WebHome http://wiki.di.uminho.pt/twiki/bin/view/Education/ProgramacaoImperativa/WebHome Programação Imperativa 1ºano da LMCC2004/2005 Equipe Docente: Carlos Ramalho, Rangel Henriques, Personal.Nuno Rodrigues Novidades ... (last changed by JoseBacelarAlmeida) 2007-02-12T19:53:38Z JoseBacelarAlmeida NovasPI http://wiki.di.uminho.pt/twiki/bin/view/Education/ProgramacaoImperativa/NovasPI $ 27 07 2005: Finais após a época de recurso $ 22 06 2005: As notas práticas são, a partir de agora, definitivas. (last changed by JoseCarlosRamalho) 2005-07-27T10:48:06Z JoseCarlosRamalho TrabalhosPratico http://wiki.di.uminho.pt/twiki/bin/view/Education/ProgramacaoImperativa/TrabalhosPratico Projecto Integrado Arquitecturas de Computadores (AC2005) e Programa o Imperativa (PI2005) ... (last changed by JoseCarlosRamalho) 2005-05-20T11:50:47Z JoseCarlosRamalho Ficha8 http://wiki.di.uminho.pt/twiki/bin/view/Education/ProgramacaoImperativa/Ficha8 Ficha Nº7: Estruturas de Dados Dinâmicas Listas Ligadas Objectivos: O objectivo principal desta ficha é familiarizar o aluno com a utilização de estruturas de dados ... (last changed by PedroRangelHenriques) 2005-04-29T09:01:34Z PedroRangelHenriques Ficha7 http://wiki.di.uminho.pt/twiki/bin/view/Education/ProgramacaoImperativa/Ficha7 Ficha Nº6: Arrays e Estruturas Objectivos: O objectivo principal desta ficha é familiarizar o aluno com a utilização de algoritmos mais avançados de busca e ordena ... (last changed by PedroRangelHenriques) 2005-04-29T09:01:06Z PedroRangelHenriques FichasPraticas http://wiki.di.uminho.pt/twiki/bin/view/Education/ProgramacaoImperativa/FichasPraticas para Submissão de Fichas Práticas e de Trabalhos Práticos Ficha 1, Ambientação ao unix e utilização de algumas ferramentas: gcc, vi, make, latex. (em PDF, em ... (last changed by PedroRangelHenriques) 2005-04-29T09:00:11Z PedroRangelHenriques Ficha5 http://wiki.di.uminho.pt/twiki/bin/view/Education/ProgramacaoImperativa/Ficha5 Ficha Nº5 Objectivos: O objectivo principal desta ficha é consolidar os conhecimentos sobre manipulação de arrays em C expandindo para a manipulação de arrays multidimensionais ... (last changed by PedroRangelHenriques) 2005-04-29T08:56:52Z PedroRangelHenriques WebPreferences http://wiki.di.uminho.pt/twiki/bin/view/Education/ProgramacaoImperativa/WebPreferences Education/ProgramacaoImperativa Web Preferences The following settings are web preferences of the Education/ProgramacaoImperativa web. These preferences overwrite ... (last changed by JoseCarlosRamalho) 2005-04-20T08:37:47Z JoseCarlosRamalho Fase1Aval http://wiki.di.uminho.pt/twiki/bin/view/Education/ProgramacaoImperativa/Fase1Aval COMUNICADO Neste momento, está a ser preparado um documento que será subscrito por todos os docentes envolvidos e que faz uma análise ao que aconteceu ontem e que ... (last changed by JoseCarlosRamalho) 2005-03-31T12:54:21Z JoseCarlosRamalho Comunicado_F1 http://wiki.di.uminho.pt/twiki/bin/view/Education/ProgramacaoImperativa/Comunicado_F1 COMUNICADO Caros colegas e alunos, depois dos acontecimentos ocorridos no dia de hoje e que foram as entregas e defesas da fase 1 do Projecto Integrado achei que devia ... (last changed by JoseCarlosRamalho) 2005-03-30T20:20:06Z JoseCarlosRamalho TPImagens http://wiki.di.uminho.pt/twiki/bin/view/Education/ProgramacaoImperativa/TPImagens circle2.pbm: Círculo circle.pbm: Círculo Imagem JPG: pote de cerâmica: image007.pbm: O pote no formato PBM image007.ppm: O pote no formato ... (last changed by JoseCarlosRamalho) 2005-03-29T20:44:17Z JoseCarlosRamalho Ficha8Res http://wiki.di.uminho.pt/twiki/bin/view/Education/ProgramacaoImperativa/Ficha8Res Makefile prog.exe : prog.o lista.o gcc o prog.exe prog.o lista.o prog.o : prog.c lista.h gcc c prog.c lista.o : lista.h lista.c gcc c lista.c lista ... (last changed by JoseCarlosRamalho) 2005-03-20T21:23:06Z JoseCarlosRamalho Ficha4 http://wiki.di.uminho.pt/twiki/bin/view/Education/ProgramacaoImperativa/Ficha4 Ficha Nº4 Objectivos: O objectivo principal desta ficha é familiarizar o aluno com a utilização e manipulação de vectores e matrizes em C. As strings são casos ... (last changed by JoseCarlosRamalho) 2005-03-20T21:12:02Z JoseCarlosRamalho Ficha6 http://wiki.di.uminho.pt/twiki/bin/view/Education/ProgramacaoImperativa/Ficha6 Ficha Nº6: Busca e Ordenação de Arrays Objectivos: O objectivo principal desta ficha é familiarizar o aluno com a utilização dos algoritmos tradicionais de busca ... (last changed by JoseCarlosRamalho) 2005-03-20T21:08:43Z JoseCarlosRamalho Ficha3 http://wiki.di.uminho.pt/twiki/bin/view/Education/ProgramacaoImperativa/Ficha3 Ficha Nº3 Objectivos: O objectivo principal desta ficha é familiarizar o aluno com a codificação de algoritmos um pouco mais complexos alguns deles envolvendo ... (last changed by JoseCarlosRamalho) 2005-03-13T10:45:36Z JoseCarlosRamalho Ficha2 http://wiki.di.uminho.pt/twiki/bin/view/Education/ProgramacaoImperativa/Ficha2 Ficha Nº2 Objectivos: O objectivo principal desta ficha é familiarizar o aluno com a linguagem algorítmica que irá ser usada para especificar os algoritmos ... (last changed by JoseCarlosRamalho) 2005-03-03T11:27:32Z JoseCarlosRamalho

                              WebSearch 08 Aug 2001 - 05:26 - NEW PeterThoeny?

                              Web Search

                              Search: \.*

                              Found 0 topics.

                                Advanced search | Help
                              TIP: to search for all topics that contain "SOAP", "WSDL", a literal "web service", but not "shampoo", write: soap wsdl "web service" -shampoo
                              Search where:       
                              (otherwise search Education/ProgramacaoImperativa Web only)

                              Other search options:
                              WebSearchAdvanced 18 Jan 2004 - 10:52 - NEW PeterThoeny?

                              Warning
                              Can't INCLUDE TWiki.WebSearchAdvanced repeatedly, topic is already included.
                              WebStatistics 10 Feb 2007 - 12:25 - r328 TWikiGuest

                              Statistics for Education/ProgramacaoImperativa Web

                              Month: Topic
                              views:
                              Topic
                              saves:
                              File
                              uploads:
                              Most popular
                              topic views:
                              Top contributors for
                              topic save and uploads:
                              Feb 2007 319 0 0  99 TrabalhosPratico
                               39 Ficha3
                               30 WebHome
                               15 FichasPraticas
                               12 Ficha1
                               12 Ficha4
                               10 Comunicado_F1
                                8 WebNotify
                                7 Ficha2
                                7 WebRss
                                7 NovasPI
                               
                              Jan 2007 666 0 0 249 TrabalhosPratico
                               65 WebHome
                               62 Ficha3
                               48 FichasPraticas
                               26 WebStatistics
                               22 Ficha1
                               21 Ficha7
                               20 WebSearch
                               18 WebChanges
                               16 WebNotify
                               14 Ficha5
                               
                              Dec 2006 459 0 0 142 TrabalhosPratico
                               57 WebHome
                               55 Ficha3
                               29 FichasPraticas
                               21 WebSearch
                               19 WebChanges
                               17 WebStatistics
                               13 WebNotify
                               12 Ficha1
                               11 Ficha5
                               10 WebIndex
                               
                              Nov 2006 826 0 0 270 TrabalhosPratico
                              118 Ficha3
                               80 WebHome
                               65 FichasPraticas
                               38 WebChanges
                               30 WebSearch
                               27 Ficha1
                               22 Ficha5
                               22 WebNotify
                               21 WebIndex
                               18 WebStatistics
                               
                              Oct 2006 823 0 0 340 TrabalhosPratico
                              113 Ficha3
                               87 WebHome
                               54 FichasPraticas
                               29 Ficha1
                               27 WebStatistics
                               26 Ficha8Res
                               19 Ficha5
                               12 WebIndex
                               12 WebChanges
                               12 NovasPI
                               
                              Sep 2006 1342 0 0 636 WebStatistics
                              252 TrabalhosPratico
                               99 Ficha3
                               70 WebHome
                               43 FichasPraticas
                               27 NovasPI
                               24 Ficha1
                               20 Ficha5
                               19 WebSearch
                               17 Ficha2
                               14 WebChanges
                               
                              Aug 2006 979 0 0 371 WebStatistics
                              220 TrabalhosPratico
                               87 Ficha3
                               77 WebHome
                               33 FichasPraticas
                               26 WebNotify
                               22 WebChanges
                               15 Ficha1
                               14 WebSearch
                               13 Comunicado_F1
                               12 Ficha5
                               
                              Jul 2006 977 0 0 187 TrabalhosPratico
                              118 WebHome
                               94 WebStatistics
                               67 FichasPraticas
                               66 Ficha3
                               56 NovasPI
                               42 WebPreferences
                               34 WebChanges
                               30 Ficha5
                               30 WebNotify
                               26 WebIndex
                               
                              Jun 2006 1281 0 0 269 TrabalhosPratico
                              227 WebHome
                              144 Ficha3
                               90 WebStatistics
                               63 FichasPraticas
                               43 Ficha5
                               40 Ficha1
                               34 WebChanges
                               30 Ficha8
                               29 NovasPI
                               28 Ficha8Res
                               
                              May 2006 1067 0 0 258 TrabalhosPratico
                              166 WebHome
                              156 Ficha3
                               63 WebStatistics
                               49 FichasPraticas
                               32 Ficha5
                               31 WebSearch
                               30 Ficha1
                               30 NovasPI
                               23 TPImagens
                               22 Ficha8
                               
                              Apr 2006 1001 0 0 184 TrabalhosPratico
                              148 WebHome
                              107 Ficha3
                               81 WebStatistics
                               54 FichasPraticas
                               36 Ficha1
                               29 WebSearch
                               28 WebIndex
                               27 NovasPI
                               26 Ficha5
                               25 WebRss
                               
                              Mar 2006 2523 0 0 525 WebHome
                              348 TrabalhosPratico
                              173 WebStatistics
                              167 FichasPraticas
                              156 Ficha3
                              106 NovasPI
                               87 WebChanges
                               76 WebPreferences
                               75 WebIndex
                               72 Ficha5
                               72 WebSearch
                               
                              Feb 2006 1802 0 0 452 WebHome
                              264 TrabalhosPratico
                              154 FichasPraticas
                               97 NovasPI
                               87 WebStatistics
                               78 Ficha3
                               69 WebChanges
                               66 TPImagens
                               57 Ficha1
                               57 WebNotify
                               54 WebSearch
                               
                              Jan 2006 1371 0 0 255 TrabalhosPratico
                              160 WebHome
                              121 WebStatistics
                               89 NovasPI
                               83 Ficha3
                               77 FichasPraticas
                               64 WebChanges
                               63 WebNotify
                               54 WebSearch
                               52 WebIndex
                               48 Ficha5
                               
                              Dec 2005 1774 0 0 219 TrabalhosPratico
                              193 WebHome
                              157 WebStatistics
                              150 NovasPI
                              117 FichasPraticas
                               92 Ficha3
                               86 WebNotify
                               85 WebChanges
                               75 WebIndex
                               75 WebPreferences
                               73 WebSearch
                               
                              Nov 2005 1273 0 0 232 TrabalhosPratico
                              149 WebHome
                              104 Ficha3
                               91 WebStatistics
                               80 FichasPraticas
                               76 NovasPI
                               71 WebChanges
                               64 WebNotify
                               52 WebSearch
                               50 WebIndex
                               39 TPImagens
                               
                              Oct 2005 1908 0 0 420 WebHome
                              244 TrabalhosPratico
                              205 WebStatistics
                              150 FichasPraticas
                              133 Ficha3
                              107 NovasPI
                               67 WebChanges
                               65 WebNotify
                               63 WebIndex
                               62 WebSearch
                               48 Ficha1
                               
                              Sep 2005 1282 0 0 206 TrabalhosPratico
                              152 WebHome
                              127 Ficha3
                              101 WebStatistics
                               87 NovasPI
                               79 FichasPraticas
                               62 WebChanges
                               56 WebNotify
                               52 WebIndex
                               49 WebSearch
                               43 TPImagens
                               
                              Aug 2005 1393 0 0 213 WebRss
                              161 WebHome
                              154 WebStatistics
                              112 TrabalhosPratico
                               84 NovasPI
                               79 Ficha3
                               59 FichasPraticas
                               57 WebNotify
                               50 WebIndex
                               47 WebChanges
                               46 WebPreferences
                               
                              Jul 2005 2105 3 0 1007 WebHome
                              122 TrabalhosPratico
                              110 FichasPraticas
                               92 WebStatistics
                               68 NovasPI
                               64 WebIndex
                               57 WebNotify
                               51 Ficha5
                               51 WebChanges
                               49 WebSearch
                               49 WebPreferences
                                3 JoseCarlosRamalho
                              Jun 2005 2440 6 0 820 WebHome
                              224 TrabalhosPratico
                              150 FichasPraticas
                              139 WebStatistics
                              107 NovasPI
                              105 Ficha3
                               73 WebIndex
                               71 WebChanges
                               66 Ficha7
                               66 WebSearch
                               66 TPImagens
                                6 JoseCarlosRamalho
                              May 2005 3055 4 0 777 WebHome
                              395 TrabalhosPratico
                              284 FichasPraticas
                              199 WebStatistics
                              117 TPImagens
                              116 Ficha5
                              113 Ficha3
                              100 Ficha8
                               99 Ficha7
                               98 NovasPI
                               71 WebSearch
                                4 JoseCarlosRamalho
                              Apr 2005 4208 22 2 1156 WebHome
                              568 FichasPraticas
                              431 TrabalhosPratico
                              217 Ficha5
                              190 WebStatistics
                              188 Ficha4
                              159 Ficha3
                              138 TPImagens
                              136 Fase1Aval
                              104 NovasPI
                               98 Comunicado_F1
                               17 JoseCarlosRamalho
                                4 PedroRangelHenriques
                                3 NunoRodrigues
                              Mar 2005 5426 75 18 1922 WebHome
                              1088 FichasPraticas
                              703 TrabalhosPratico
                              229 WebStatistics
                              214 Ficha2
                              203 Ficha3
                              152 Ficha1
                              101 NovasPI
                               90 WebChanges
                               86 Ficha4
                               71 WebNotify
                               85 JoseCarlosRamalho
                                8 NunoRodrigues
                              Feb 2005 926 25 3 440 WebHome
                              202 FichasPraticas
                               88 Ficha1
                               58 WebStatistics
                               29 NovasPI
                               16 WebChanges
                               15 WebSearch
                               11 WebNotify
                               11 WebPreferences
                               11 WebIndex
                                9 WebTopicList
                               25 JoseCarlosRamalho
                                3 AlcinoCunha
                              Dec 2004 0 0 0    
                              Nov 2004 0 0 0    

                              Notes:

                              • Do not edit this topic, it is updated automatically. (You can also force an update)
                              • TWikiDocumentation tells you how to enable the automatic updates of the statistics.
                              • Suggestion: You could archive this topic once a year and delete the previous year's statistics from the table.
                              WebTopicList 24 Nov 2001 - 11:40 - NEW PeterThoeny?

                              See also the verbose WebIndex.

                              Found 27 topics.

                                Simple search | Help
                              TIP: to search for all topics that contain "SOAP", "WSDL", a literal "web service", but not "shampoo", write: soap wsdl "web service" -shampoo
                              Search where:


                              (otherwise search Education/ProgramacaoImperativa Web only)
                              Sort results by:


                              Make search:
                              (semicolon ; for and) about regular expression search
                              Don't show:

                              Do show: about BookView
                              Limit results to: (all to show all topics)

                              Other search options:
                              WebStatistics 10 Feb 2007 - 12:25 - r328 TWikiGuest

                              Statistics for Education/ProgramacaoImperativa Web

                              Month: Topic
                              views:
                              Topic
                              saves:
                              File
                              uploads:
                              Most popular
                              topic views:
                              Top contributors for
                              topic save and uploads:
                              Feb 2007 319 0 0  99 TrabalhosPratico
                               39 Ficha3
                               30 WebHome
                               15 FichasPraticas
                               12 Ficha1
                               12 Ficha4
                               10 Comunicado_F1
                                8 WebNotify
                                7 Ficha2
                                7 WebRss
                                7 NovasPI
                               
                              Jan 2007 666 0 0 249 TrabalhosPratico
                               65 WebHome
                               62 Ficha3
                               48 FichasPraticas
                               26 WebStatistics
                               22 Ficha1
                               21 Ficha7
                               20 WebSearch
                               18 WebChanges
                               16 WebNotify
                               14 Ficha5
                               
                              Dec 2006 459 0 0 142 TrabalhosPratico
                               57 WebHome
                               55 Ficha3
                               29 FichasPraticas
                               21 WebSearch
                               19 WebChanges
                               17 WebStatistics
                               13 WebNotify
                               12 Ficha1
                               11 Ficha5
                               10 WebIndex
                               
                              Nov 2006 826 0 0 270 TrabalhosPratico
                              118 Ficha3
                               80 WebHome
                               65 FichasPraticas
                               38 WebChanges
                               30 WebSearch
                               27 Ficha1
                               22 Ficha5
                               22 WebNotify
                               21 WebIndex
                               18 WebStatistics
                               
                              Oct 2006 823 0 0 340 TrabalhosPratico
                              113 Ficha3
                               87 WebHome
                               54 FichasPraticas
                               29 Ficha1
                               27 WebStatistics
                               26 Ficha8Res
                               19 Ficha5
                               12 WebIndex
                               12 WebChanges
                               12 NovasPI
                               
                              Sep 2006 1342 0 0 636 WebStatistics
                              252 TrabalhosPratico
                               99 Ficha3
                               70 WebHome
                               43 FichasPraticas
                               27 NovasPI
                               24 Ficha1
                               20 Ficha5
                               19 WebSearch
                               17 Ficha2
                               14 WebChanges
                               
                              Aug 2006 979 0 0 371 WebStatistics
                              220 TrabalhosPratico
                               87 Ficha3
                               77 WebHome
                               33 FichasPraticas
                               26 WebNotify
                               22 WebChanges
                               15 Ficha1
                               14 WebSearch
                               13 Comunicado_F1
                               12 Ficha5
                               
                              Jul 2006 977 0 0 187 TrabalhosPratico
                              118 WebHome
                               94 WebStatistics
                               67 FichasPraticas
                               66 Ficha3
                               56 NovasPI
                               42 WebPreferences
                               34 WebChanges
                               30 Ficha5
                               30 WebNotify
                               26 WebIndex
                               
                              Jun 2006 1281 0 0 269 TrabalhosPratico
                              227 WebHome
                              144 Ficha3
                               90 WebStatistics
                               63 FichasPraticas
                               43 Ficha5
                               40 Ficha1
                               34 WebChanges
                               30 Ficha8
                               29 NovasPI
                               28 Ficha8Res
                               
                              May 2006 1067 0 0 258 TrabalhosPratico
                              166 WebHome
                              156 Ficha3
                               63 WebStatistics
                               49 FichasPraticas
                               32 Ficha5
                               31 WebSearch
                               30 Ficha1
                               30 NovasPI
                               23 TPImagens
                               22 Ficha8
                               
                              Apr 2006 1001 0 0 184 TrabalhosPratico
                              148 WebHome
                              107 Ficha3
                               81 WebStatistics
                               54 FichasPraticas
                               36 Ficha1
                               29 WebSearch
                               28 WebIndex
                               27 NovasPI
                               26 Ficha5
                               25 WebRss
                               
                              Mar 2006 2523 0 0 525 WebHome
                              348 TrabalhosPratico
                              173 WebStatistics
                              167 FichasPraticas
                              156 Ficha3
                              106 NovasPI
                               87 WebChanges
                               76 WebPreferences
                               75 WebIndex
                               72 Ficha5
                               72 WebSearch
                               
                              Feb 2006 1802 0 0 452 WebHome
                              264 TrabalhosPratico
                              154 FichasPraticas
                               97 NovasPI
                               87 WebStatistics
                               78 Ficha3
                               69 WebChanges
                               66 TPImagens
                               57 Ficha1
                               57 WebNotify
                               54 WebSearch
                               
                              Jan 2006 1371 0 0 255 TrabalhosPratico
                              160 WebHome
                              121 WebStatistics
                               89 NovasPI
                               83 Ficha3
                               77 FichasPraticas
                               64 WebChanges
                               63 WebNotify
                               54 WebSearch
                               52 WebIndex
                               48 Ficha5
                               
                              Dec 2005 1774 0 0 219 TrabalhosPratico
                              193 WebHome
                              157 WebStatistics
                              150 NovasPI
                              117 FichasPraticas
                               92 Ficha3
                               86 WebNotify
                               85 WebChanges
                               75 WebIndex
                               75 WebPreferences
                               73 WebSearch
                               
                              Nov 2005 1273 0 0 232 TrabalhosPratico
                              149 WebHome
                              104 Ficha3
                               91 WebStatistics
                               80 FichasPraticas
                               76 NovasPI
                               71 WebChanges
                               64 WebNotify
                               52 WebSearch
                               50 WebIndex
                               39 TPImagens
                               
                              Oct 2005 1908 0 0 420 WebHome
                              244 TrabalhosPratico
                              205 WebStatistics
                              150 FichasPraticas
                              133 Ficha3
                              107 NovasPI
                               67 WebChanges
                               65 WebNotify
                               63 WebIndex
                               62 WebSearch
                               48 Ficha1
                               
                              Sep 2005 1282 0 0 206 TrabalhosPratico
                              152 WebHome
                              127 Ficha3
                              101 WebStatistics
                               87 NovasPI
                               79 FichasPraticas
                               62 WebChanges
                               56 WebNotify
                               52 WebIndex
                               49 WebSearch
                               43 TPImagens
                               
                              Aug 2005 1393 0 0 213 WebRss
                              161 WebHome
                              154 WebStatistics
                              112 TrabalhosPratico
                               84 NovasPI
                               79 Ficha3
                               59 FichasPraticas
                               57 WebNotify
                               50 WebIndex
                               47 WebChanges
                               46 WebPreferences
                               
                              Jul 2005 2105 3 0 1007 WebHome
                              122 TrabalhosPratico
                              110 FichasPraticas
                               92 WebStatistics
                               68 NovasPI
                               64 WebIndex
                               57 WebNotify
                               51 Ficha5
                               51 WebChanges
                               49 WebSearch
                               49 WebPreferences
                                3 JoseCarlosRamalho
                              Jun 2005 2440 6 0 820 WebHome
                              224 TrabalhosPratico
                              150 FichasPraticas
                              139 WebStatistics
                              107 NovasPI
                              105 Ficha3
                               73 WebIndex
                               71 WebChanges
                               66 Ficha7
                               66 WebSearch
                               66 TPImagens
                                6 JoseCarlosRamalho
                              May 2005 3055 4 0 777 WebHome
                              395 TrabalhosPratico
                              284 FichasPraticas
                              199 WebStatistics
                              117 TPImagens
                              116 Ficha5
                              113 Ficha3
                              100 Ficha8
                               99 Ficha7
                               98 NovasPI
                               71 WebSearch
                                4 JoseCarlosRamalho
                              Apr 2005 4208 22 2 1156 WebHome
                              568 FichasPraticas
                              431 TrabalhosPratico
                              217 Ficha5
                              190 WebStatistics
                              188 Ficha4
                              159 Ficha3
                              138 TPImagens
                              136 Fase1Aval
                              104 NovasPI
                               98 Comunicado_F1
                               17 JoseCarlosRamalho
                                4 PedroRangelHenriques
                                3 NunoRodrigues
                              Mar 2005 5426 75 18 1922 WebHome
                              1088 FichasPraticas
                              703 TrabalhosPratico
                              229 WebStatistics
                              214 Ficha2
                              203 Ficha3
                              152 Ficha1
                              101 NovasPI
                               90 WebChanges
                               86 Ficha4
                               71 WebNotify
                               85 JoseCarlosRamalho
                                8 NunoRodrigues
                              Feb 2005 926 25 3 440 WebHome
                              202 FichasPraticas
                               88 Ficha1
                               58 WebStatistics
                               29 NovasPI
                               16 WebChanges
                               15 WebSearch
                               11 WebNotify
                               11 WebPreferences
                               11 WebIndex
                                9 WebTopicList
                               25 JoseCarlosRamalho
                                3 AlcinoCunha
                              Dec 2004 0 0 0    
                              Nov 2004 0 0 0    

                              Notes:

                              • Do not edit this topic, it is updated automatically. (You can also force an update)
                              • TWikiDocumentation tells you how to enable the automatic updates of the statistics.
                              • Suggestion: You could archive this topic once a year and delete the previous year's statistics from the table.
                              WebTopicList 24 Nov 2001 - 11:40 - NEW PeterThoeny?

                              See also the verbose WebIndex.

                              Found 27 topics.
                              This site is powered by the TWiki collaboration platformCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
                              Ideas, requests, problems regarding TWiki? Send feedback
                              Syndicate this site RSSATOM