solidsnake Posted October 6, 2011 at 12:37 AM Report #414751 Posted October 6, 2011 at 12:37 AM 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; }
brunoais Posted October 6, 2011 at 06:06 AM Report #414758 Posted October 6, 2011 at 06:06 AM 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%.
joseerodrigues Posted October 6, 2011 at 02:58 PM Report #414874 Posted October 6, 2011 at 02:58 PM @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
KTachyon Posted October 6, 2011 at 09:05 PM Report #414942 Posted October 6, 2011 at 09:05 PM 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
joseerodrigues Posted October 6, 2011 at 09:13 PM Report #414945 Posted October 6, 2011 at 09:13 PM eh eh podia ter ficado como exercicio para o solidsnake 😁
solidsnake Posted October 6, 2011 at 10:54 PM Author Report #414961 Posted October 6, 2011 at 10:54 PM obrigado, é que eu tenho ainda muito poucas aulas e experiencia quase zero
softklin Posted October 7, 2011 at 08:18 AM Report #414974 Posted October 7, 2011 at 08:18 AM 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.
solidsnake Posted October 9, 2011 at 12:30 AM Author Report #415220 Posted October 9, 2011 at 12:30 AM eu estou a usar um plug in do eclipse chamado aguiaj. que foi criado na minha faculdade e tem como objectivo ajudar os alunos a aprender a programar.
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now