Este é o blog de relacionamento com alunos de Fábio Nakano.
Desejo testar se esta mídia facilita a comunicação e aprendizado de conteúdo.
Gostaria que vocès dessem notas mais altas para posts que ajudaram mais a entender o assunto (e não por outro critério, por exemplo o melhor escrito ou o mais "bonito")
fabionakano at usp dot br
Prédio A1, segundo andar - Sala 204E
Caso precise do mapa do Campus:http://each.uspnet.usp.br/site/mapa.php
Siga-me por email preenchendo a caixa abaixo.
quinta-feira, 22 de agosto de 2019
links aula 22 de agosto
aula de 23.08: http://www.each.usp.br/digiampietri/SIN5013/02-complexidadeAssintotica.pdf
vocabulário para argumentação matemática: http://www.comp.uems.br/~fhna/ca/180613/Alguns%20termos.pdf
sábado, 3 de agosto de 2019
Exemplo 3 de algoritmo recursivo - "quebrando" o problema em dois, fazendo duas chamadas recursivas.
import java.lang.Exception;
|
Java2html |
O aspecto mais relevante, neste momento da disciplina, é a sequência de invocações e retornos dos métodos. Neste exemplo particular é uma árvore binária.
Nesta solução, fazer duas invocações (chamadas) recursivas é uma possibilidade, idéia que pode ser notada como: prod(a,b)= prod (a,b/2) + prod (a,b/2) + ((b%2)==1)?a:0. Como notado em aula, esta solução é menos eficiente que a do exemplo 2. Através do cálculo da complexidade assintótica (assunto das próximas aulas) é possível mostrar que a função de complexidade de tempo desta solução pertence à mesma classe da função de complexidade da solução 1.
Exemplo 2 de algoritmo recursivo - "quebrando" o problema em dois.
import java.lang.Exception;
|
Java2html |
O cálculo do produto pode ser feito "diminuindo o tamanho do problema de uma unidade" ié: prod(a,b) = a + prod (a, b-1), ou "diminuindo o tamanho do problema pela metade (e dobrando o valor)" ié: prod(a,b) = 2*prod(a,b/2) + ((b%2)==1)?a:0. O tempo de execução da primeira solução é proporcional ao valor de b, o da segunda é proporcional ao log de b na base 2.
Exemplo de recursão com impressão da pilha de execução
import java.lang.Exception;
|
Java2html |
O objeto Exception e armazena uma representação da pilha de execução no momento em que é instanciado. Aproveito isso para imprimir a pilha de execução antes e depois de cada invocação (chamada) recursiva. Isto traz informação que permite "ver" a pilha de execução crescendo à medida em que as invocações são feitas e diminuindo à medida que as invocações retornam.
Exemplo de algoritmo recursivo: Cálculo de produto usando somas.
import java.lang.Exception;
|
Java2html |
quinta-feira, 1 de agosto de 2019
quinta-feira, 11 de abril de 2019
11.04
public static void main(String args[]) {
int x=10;
int y=25;
int z=x+y;
System.out.println("Sum of x+y = " + z);
int[] v={98, 356, 67, -99, 67, 1, 3, 150, 8, 75};
imprime (v);
troca(v,10);
imprime (v);
menor(v);
imprime (v);
}
public static void imprime (int[] v) {
for(int i=0;i<v.length;i++) {
System.out.print (v[i] + " ");
}
System.out.println ();
}
public static void troca (int[] v, int t) {
int temp;
if (t<=v.length-2) {
temp=v[t];
v[t]=v[t+1];
v[t+1]=temp;
} else {
System.out.println ("t maior que o máximo.");
}
}
public static void menor (int[] v) {
for(int i=v.length-2;i>=0;i--) {
if (v[i+1]<v[i]) {
troca(v,i);
}
}
}
}
sexta-feira, 22 de março de 2019
aula 21.03.2019 3
public class MyClass { public static void main(String args[]) { int x=3; switch(x) { case 3: System.out.println ("mais que excelente"); for (int i=0; i<=10;i+=2) { System.out.println (i); } break; case 0: System.out.println("média"); break; case 1: System.out.println ("aprovado"); break; case 2: System.out.println ("excelente!"); break; case 4: System.out.println ("terminou"); break; default: System.out.println ("qq outra coisa"); } System.out.println ("aqui!!!"); } }
aula 21.03.2019 2
public class MyClass { public static void main(String args[]) { int x=10; int y=4; int z=x+y; if (z<10) { System.out.println("média"); } else if (z<15) { System.out.println ("aprovado"); } else if (z<18) { System.out.println ("excelente!"); } else { System.out.println ("mais que excelente"); } System.out.println ("terminou"); } }
aula 21.03.2019 1
public class MyClass { public static void main(String args[]) { int x=10; int y=4; int z=x+y; if (z<10) { System.out.println("média"); } else { if (z<15) { System.out.println ("aprovado"); } else { if (z<18) { System.out.println ("excelente!"); } else { System.out.println ("mais que excelente"); } } } System.out.println ("terminou"); } }