Jump to content

podiam-me explicar como funciona este pequeno programa?


Recommended Posts

Posted

Este programa ( só para saberem já à priori) faz a multiplicação de dois numeros sem recorrer ao operador (*)

Podiam-me ajudar a compreender  o código, dando assim uma explicação resumida?

Este programa foi exposto na 2 aula teórica de java que eu tive na faculdade .

public static int mult(int a, int 😉 {

    int r = 0;

    int n = b;

    while( n > 0 ) {

        r = r + a;

        n = n - 1;

    }

    return r;

}

Posted

Quando usas somas, o que é que significa somar 4 + 4 + 4 + 4 + 4? (traduzindo para multiplicação)?

"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Posted

@solidsnake - qual é a tua questão mais concrectamente? em que parte do código tens duvidas?

Tendo como exemplo, 2 * 3 :

a = 2, b = 3

r = 2 * 3  OU r = 2 + 2 + 2;

O que o código faz parece-me bastante simples, ele soma "a" ao resultado final (r, que começa por ser zero), "b" vezes, que é precisamente o mesmo q dizer r = a * b;

NOTA: esse bloco de código só deverá funcionar se o segundo argumento for positivo. para a = 2 e b = -3 esse código deve falhar, e devolver zero, ao invés de -6.

Cumprimentos,

José Rodrigues

Posted

Questão que se resolve com uns pequenos tweaks:

public static int mult(int a, int b) {
   int r = 0;
   int n = Math.abs(b);
   while( n > 0 ) {
       r = r + a;
       n = n - 1;
   }
   return (b<0)?-r:r;
}

“There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.”

-- Tony Hoare

Posted

Por vezes, olhar para o código nu e cru nem sempre é intuitivo. Se já estiveres acostumado ao eclipse, podes usar a vista java debug para ver a execução do programa passo a passo, acompanhado de um quadro onde estão os valores de todas as variáveis nesse momento.

Agora não tenho tempo para deixar o processo detalhado, mas mais logo eu (ou eventualmente alguém) te deixa aqui os passos para que possas ver como funciona o teu programa em detalhe através do eclipse.

EDIT: Como prometido, aqui fica a forma de veres isso no Eclipse com o auxílio da vista de debug:

1. Cria um projecto do tipo "Java Project" File > New > Java Project e dá-lhe um nome da tua preferência. Clica em Finish.

2. Do lado esquerdo, deve aparecer-te uma vista "Package explorer" com os conteúdos do teu projecto. Aí, se ainda não existir nada na pasta src, cria uma nova classe com um método main (botão direito na pasta src > new > Class...)

3. Nas propriedades da classe que vais criar, dá um nome à tua classe (por exemplo Multiplicacao), e certifica-te de que marcas a caixa para criar o método main (opção: public static void main(String[] args) )

4. A classe está criada. POr baixo do método main, coloca a tua função mult. No main, adiciona uma chamada à função com quaisquer números. O código deve ficar algo do género:

public class Multiplicacao {

/**
 * @param args
 */
public static void main(String[] args) {
	int resultado = mult(2,4);
	System.out.println(resultado);
}

public static int mult(int a, int b) {
	int r = 0;
	int n = b;
	while( n > 0 ) {
		r = r + a;
		n = n - 1;
	}
	return r;
}

}

5. Para que possas ver a execução do programa passo a passo, necessitas de indicar ao eclipse um ponto de paragem (breakpoint) onde a execução do programa deve ser temporariamente interrompida, de modo a que possas controlar a sua execução. Para isso, vai à linha onde tens a assinatura da função mult (public static int mult(int a, int b) {) com o cursor do rato. Depois , vai ao menu Debug e escolhe "Toggle Breakpoint". Para confirmar, deve aparecer-te um pequeno círculo azul antes dessa linha. Acabaste de definir um breakpoint.

6. Desta vez, para correr o programa, deves usar o botão de um escaravelho (bug) verde. Isso vai permitir que o eclipse use o teu breakpoint. Se fores questionado para abrir a vista de debug, escolhe Yes.

7. O programa está agora parado na função mult e não avança enquanto não lhe deres ordem. Para dares a ordem para executar uma instrução, carrega na tecla F5. A linha onde o eclipse está é marcada a verde, e as instruções que lá estiverem serão executadas assim que premires a tecla F5. POdes reparar ainda, no lado direito, que existe uma tabela das variáveis e dos seus respetivos valores. O exercício que te proponho é, tendo em conta que sabes o objetivo do programa e as dicas que te deram neste tópico sobre a execução em detalhe do algoritmo, analisar os valores das variáveis e descobrir a função de cada uma, tendo em conta também a instrução que afeta essa variável.

Isto vai permitir-te (espero eu) aprender de forma autónoma e intuitiva o funcionamento do algoritmo neste programa. No entanto, se tiveres alguma dúvida, coloca neste tópico, ou num novo, se tiveres dúvidas noutros programas. 👍

Nick antigo: softclean | Tens um projeto? | Wiki P@P

Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.