Stand by...

Algoritmia e Programação em JAVA

A licenciatura de Engenharia Informática no ISEP tem uma disciplina no 1º semestre do 1º ano chamada APROG (Algoritmia e Programação). A linguagem de programação utilizada é o JAVA na sua versão 6 (em 2004 altura em que fiz a primeira inscrição aprendia-se linguagem C ) e o IDE mais utilizado nas aulas é o NetBeans. Inicialmente ainda comecei com o Xcode, mas depois de ter instalado a versão com o SDK do iPhone, a opção para a criação de aplicações do tipo JAVA simplesmente desapareceu. Ainda que continuasse a ser possível programar em JAVA no Xcode, acabei por me render ao NetBeans.

Hoje foi dia de exame à cadeira e aproveito o facto para adicionar uma nova categoria “licenciatura” no blog, para disponibilizar algum contéudo que possa ser útil para alguém.

Um dos exercícios pretendidos no exame, era a criação de um método em JAVA que recebe uma matriz quadrada de números reais e retorna dois elementos da matriz: o maior elemento acima da diagonal secundária e o maior elemento abaixo da diagonal secundária. A minha implementação é esta:

private static float[] maiores(float[][] matriz) {
float[] v = new float[2];
float maioracima = matriz[0][0];
int x, y;
x = matriz.length - 1;
y = matriz[0].length - 1;

float maiorabaixo = matriz[x][y];

int k = matriz[0].length - 2;

for (int i = 0; i < matriz.length - 1; i++) {
for (int j = k; j >= 0; j--) {
if (matriz[i][j] > maioracima) {
maioracima = matriz[i][j];
}
}
k--;
}

int j = 1;
k = 1;

for (int i = matriz.length - 1; i >= 1; i--) {
for (j = k; j < matriz[0].length; j++) {
if (matriz[i][j] > maiorabaixo) {
maiorabaixo = matriz[i][j];
}
}
k++;
}

v[0] = maioracima;
v[1] = maiorabaixo;
return v;
}

Finalmente era pedido no método principal, que fosse mostrado o maior elemento acima da diagonal secundária e o maior elemento abaixo da diagonal secundária de uma dada matriz:

public static void main(String[] args) {
float matriz[][] = {{1, 1, 8, 0, 9},
{2, 2, 7, 1, 2},
{3, 3, 5, 2, 7},
{4, 4, 1, 3, 6},
{5, 4, 0, 5, 1}};

float[] mdiag = new float[2];

mdiag = maiores(matriz);

System.out.printf("O maior elemento acima da diagonal secundária é: " + mdiag[0]);
System.out.println();
System.out.printf("O maior elemento abaixo da diagonal secundária é: " + mdiag[1]);
System.out.println();
}

Rise Against – Savior

Porque não só de música lamechas vive o homem :P
Já encomendei o album Appeal to Reason dos Rise Against na Play.com

Dizem que é uma espécie de cadeirão

A cadeira de Análise Matemática tem cerca de 500 alunos inscritos no ISEP e é uma espécie de cadeirão no primeiro ano do curso de Engenharia Informática.
Acabo de ter acesso à nota do último teste que me garante que fiz a cadeira por frequência sem necessitar de ir agora a exame. Esta já está feita!!!

Só vou mesmo ter saudades da professora Sandra Aires, uma pessoa incrível sempre disponível para ajudar todos os alunos mesmo noutras cadeiras do Departamento de Matemática, muito simpática e sempre esforçada para dar o seu melhor sem nunca descansar até que os alunos fiquem a perceber realmente da poda. Uma pessoa rara nos dias de hoje…. a ela o meu MUITO OBRIGADO!

2009 review by numbers

O meu ano 2009 visto através dos meus investimentos:

- Comprei um novo MacBook de 13″, ainda antes de a Poweron ter fechado portas :-/
- Paguei mais de 100 euros por um almoço inesquecível no D.O.C.
- Dois bilhetes para o próximo concerto dos U2 em Coimbra na RedZone ficaram-me por mais de 500 euros.
- Já mais perto do final do ano comprei um iPod Touch e somando todas as músicas que paguei no iTunes vai para mais de 100 euros.

No início deste ano de 2010 preve-se uma compra que irá ultrapassar largamento todos os meus investimentos do ano passado numa só vez…. novidades para breve.

Venha agora mais um ano de crise igual ao que terminou ;-)

Between the click of the light and the start of a dream

Se há música que está associada a uma grande mudança na minha vida é sem dúvida esta “Between the click of the light and the start of a dream” dos Arcade Fire.
Foram noites e noites seguidas a vibrar e adormecer com este som brutal.
Obrigado a ti O. por ter conhecido esta música e por todo o significado que ela teve e ainda tem para mim.

Kings for a night

Eu estive ontem no concerto dos Kings of Convenience que se realizou no Theatro Circo em Braga e foi uma noite espectacular!!!
koc

rmadison

Esta semana descobri um comando no Debian simplesmente genial….
Quantas vezes já vos aconteceu quererem saber qual é ou foi a versão de um determinado pacote incluído numa dada versão da distribuição? Uma das soluções pode ser ir procurar no site dos pacotes da Debian ou então, agora para mim ainda se tornou mais fácil com um comando que se chama rmadison.
Com o rmadison conseguimos saber para um dado pacote, a versão do pacote, versão da distro e as arquitecturas para o qual ele foi desenvolvido na altura. Eis um exemplo para o openssh-server:

debian:~# rmadison openssh-server
openssh-server | 1:4.3p2-9etch2+m68k1 | etch-m68k | m68k
openssh-server | 1:4.3p2-9etch3 | oldstable | alpha, amd64, arm, hppa, i386, ia64, mips, mipsel, powerpc, s390, sparc
openssh-server | 1:5.1p1-5 | stable | alpha, amd64, arm, armel, hppa, i386, ia64, mips, mipsel, powerpc, s390, sparc
openssh-server | 1:5.1p1-8 | testing | alpha, amd64, armel, hppa, i386, ia64, kfreebsd-amd64, kfreebsd-i386, mips, mipsel, powerpc, s390, sparc
openssh-server | 1:5.1p1-8 | unstable | alpha, amd64, armel, hppa, hurd-i386, i386, ia64, kfreebsd-amd64, kfreebsd-i386, mips, mipsel, powerpc, s390, sparc

Simplesmente fantástico :-) Retirado desta imagem do Debian Workshop em New York City.

The origin of SPAM

Porque hoje se comemora o 40º aniversário da emissão do primeiro episódio dos Monty Python’s “Flying Circus”, aqui vai a origem do termo SPAM que se tornou célebre com este video: