February 5, 2010
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();
}