import java.lang.Math; // headers MUST be above the first class // one class needs to have a main() method public class HelloWorld { // arguments are passed using the text field below this editor public static void main(String[] args) { int cont = 0; if (args.length>0) System.out.println (args[0]+" "+args[1] + " " + args[2]); int lim = Integer.parseInt(args[2]); while (cont <= lim){ System.out.println(binario(cont)); cont++; } } public static int binario (int decimal) { int binario = 0; int resto = 0; int pot = 1; while (decimal > 0) { resto = decimal%2; decimal = decimal/2; //binario = resto + binario; binario = resto * pot + binario; pot = pot * 10; } return binario; } }
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, 30 de março de 2017
código turma 3 30.03.2017
Aula-30.03 turma 3
import java.lang.Math; // headers MUST be above the first class // one class needs to have a main() method public class HelloWorld { // arguments are passed using the text field below this editor public static void main(String[] args) { int cont = 1; while (cont <= 50){ int binario = 0; int resto = 0; int pot = 1; int decimal = cont; while (decimal > 0) { resto = decimal%2; decimal = decimal/2; //binario = resto + binario; binario = resto * pot + binario; pot = pot * 10; } cont++; System.out.println(binario); } } }
Ciódigo da aula de 30.03.2017 turma 2
public class HelloWorld { public static void main(String[] args) { int decimal=64; String binario=""; System.out.println("Iniciando Loop While"); while((decimal)>0){ binario = decimal%2 + binario; decimal = decimal/2; System.out.println(decimal); } System.out.println(binario); } }
sábado, 25 de março de 2017
Leitura de teclado
Na aula foi perguntado como ler do teclado. Abaixo está o código completo de um programa que aguarda que algo seja digitado e repete o que foi escrito. Bom divertimento!
import java.util.Scanner; public class Eco { public static void main(String[] args) { String algo; Scanner sc=new Scanner (System.in); // instancia um objeto scanner que le de // System.in (que representa o teclado) System.out.println ("Por favor digite algo..."); algo=sc.next(); // le string do teclado System.out.println ("Voce digitou: " + algo); } }
Desenhando em Java
.... para quem estiver curioso sobre como abrir uma janela em modo gráfico usando Java, o código neste link abre uma janela e desenha algumas forma geométricas.
- Descompacte o conteúdo;
- abra o terminal (console, linha de comando,...);
- entre no diretório onde estão os arquivos *.java;
- compile todos os arquivos com o comando javac *.java
- execute com o comando java FramePanel.java
Se quiser mudar o desenho ou fazer o seu próprio, modifique os métodos paintingN onde N={1,2,3}.
quinta-feira, 23 de março de 2017
Código da aula de 23.03 turma 2
import java.lang.Math; // headers MUST be above the first class // one class needs to have a main() method public class HelloWorld { // arguments are passed using the text field below this editor public static void main(String[] args) { System.out.println ("Iniciando"); int n1 = 3, nt=0; int x = 1, x1=1; while( x<=10){ nt =x*n1; System.out.println(nt); x++; //x+=1; while (x1 <= 3) { if ((nt%x1)==0){ System.out.println ("Eh divisivel por " + x1); } else{ System.out.println ("Nao eh divisivel por " + x1); } x1++; } x1=1; } } }
quinta-feira, 16 de março de 2017
Turma 3 código 16.03.2017
import java.util.Scanner;
public class Sargento {
public static void main (String[] args) {
Scanner byby = new Scanner(System.in);
final int elfo = 0;
final int anao = 1;
final int hobbit = 2;
final int orc = 3;
final int humano = 4;
System.out.println( "insira a rassa pf, eu nunca te pedi nada parseiro(a): ");
int rassa = byby.nextInt();
System.out.println( "insira a altura pf, eu tenho altzheimeeer, nunca pedi nada parseiro(a): ");
int altura= byby.nextInt(); // altura em celoko
switch (rassa){
case elfo :
if (altura < 100) {
System.out.println ("Muito muito baixo");
} else if (altura < 120){
System.out.println ("Muito baixo");
} else if (altura < 150){
System.out.println ("Baixo");
} else if (altura < 180){
System.out.println ("Medio");
} else if (altura < 200){
System.out.println ("Alto");
} else {
System.out.println ("Gigante");
}
break;
case orc :
if (altura < 300) {
System.out.println ("Muito muito baixo");
} else if (altura < 320){
System.out.println ("Muito baixo");
} else if (altura < 350){
System.out.println ("Baixo");
} else if (altura < 380){
System.out.println ("Medio");
} else if (altura < 400){
System.out.println ("Alto");
} else {
System.out.println ("Gigante");
}
break;
default:
System.out.println("pet do gandalf");
}// fecha o switch
}
}
public class Sargento {
public static void main (String[] args) {
Scanner byby = new Scanner(System.in);
final int elfo = 0;
final int anao = 1;
final int hobbit = 2;
final int orc = 3;
final int humano = 4;
System.out.println( "insira a rassa pf, eu nunca te pedi nada parseiro(a): ");
int rassa = byby.nextInt();
System.out.println( "insira a altura pf, eu tenho altzheimeeer, nunca pedi nada parseiro(a): ");
int altura= byby.nextInt(); // altura em celoko
switch (rassa){
case elfo :
if (altura < 100) {
System.out.println ("Muito muito baixo");
} else if (altura < 120){
System.out.println ("Muito baixo");
} else if (altura < 150){
System.out.println ("Baixo");
} else if (altura < 180){
System.out.println ("Medio");
} else if (altura < 200){
System.out.println ("Alto");
} else {
System.out.println ("Gigante");
}
break;
case orc :
if (altura < 300) {
System.out.println ("Muito muito baixo");
} else if (altura < 320){
System.out.println ("Muito baixo");
} else if (altura < 350){
System.out.println ("Baixo");
} else if (altura < 380){
System.out.println ("Medio");
} else if (altura < 400){
System.out.println ("Alto");
} else {
System.out.println ("Gigante");
}
break;
default:
System.out.println("pet do gandalf");
}// fecha o switch
}
}
domingo, 12 de março de 2017
Tratamento de erro 2017.
Post1 sobre o assunto 2015/2016.
Post2 sobre o assunto 2015/2016.
Post3 sobre o assunto 2015/2016.
Post4 sobre o assunto 2015/2016.
Post5 sobre o assunto 2015/2016.
Post6 sobre o assunto 2015/2016.
Nota de aula 2015/2016 sobre o assunto.
Exemplo1 2015/2016.
Exemplo2 2015/2016.
Exemplo3 2015/2016.
Exemplo4 2015/2016.
Exemplo5 2015/2016.
Exemplo6 2015/2016.
Exemplo7 2015/2016.
Exemplo8 2015/2016.
Exemplo9 2015/2016.
Exemplo10 2015/2016.
Execução Sequencial
É o modo padrão de execução: comando a comando, linha a linha sequencialmente.
Esta é uma das características necessárias para que uma linguagem permita que se faça qualquer computação. Isto é demonstrado pelo teorema da programação estruturada.
Veja neste post do que se trata (sem grandes raciocínios).
Esta é uma das características necessárias para que uma linguagem permita que se faça qualquer computação. Isto é demonstrado pelo teorema da programação estruturada.
Veja neste post do que se trata (sem grandes raciocínios).
Escopo e Indentação
Programas são constituídos por sequências de comandos. Comandos podem ser agrupados em blocos de código. Em Java (e em C também) blocos de código são delimitados por chaves:
{
comando 1;
comando 2;
....
{
comando3;
comando 4;
....;
}
comando 5;
comando 6;
....;
}
Blocos de código podem ser aninhados, como mostrado acima. Eles não podem ser intercalados, ou seja o bloco "de dentro" TEM que estar inteiramente "dentro" do bloco "de fora".
Blocos de código servem tanto para estruturar melhor o código quanto delimitar blocos que são ou não executados em função de comandos de desvio do fluxo de execução do programa (como if, switch, while,...)
Blocos também delimitam escopo de variáveis.
Post sobre escopo de variáveis
Post sobre variáveis "globais"
Para facilitar a leitura do código por programadores, costuma-se indentar (ou edentar) o código: Comandos no mesmo bloco são alinhados, sempre que se abre um novo bloco aumenta o recuo em alguns espaços ou em 1 tab e sempre que se fecha um bloco desfaz-se o recuo.
É importante que esse recuo seja feito ou somente com espaços ou somente com tab's, sistematicamente, para que a aparência não se "quebre" caso você use tab's que correspondam a 3 espaços e outro use tab's que correspondam a outra quantidade de espaços.
Em linguagens com Python, a indentação serve para delimitar os blocos de código.
Exemplo de código indentado.
{
comando 1;
comando 2;
....
{
comando3;
comando 4;
....;
}
comando 5;
comando 6;
....;
}
Blocos de código podem ser aninhados, como mostrado acima. Eles não podem ser intercalados, ou seja o bloco "de dentro" TEM que estar inteiramente "dentro" do bloco "de fora".
Blocos de código servem tanto para estruturar melhor o código quanto delimitar blocos que são ou não executados em função de comandos de desvio do fluxo de execução do programa (como if, switch, while,...)
Blocos também delimitam escopo de variáveis.
Post sobre escopo de variáveis
Post sobre variáveis "globais"
Para facilitar a leitura do código por programadores, costuma-se indentar (ou edentar) o código: Comandos no mesmo bloco são alinhados, sempre que se abre um novo bloco aumenta o recuo em alguns espaços ou em 1 tab e sempre que se fecha um bloco desfaz-se o recuo.
É importante que esse recuo seja feito ou somente com espaços ou somente com tab's, sistematicamente, para que a aparência não se "quebre" caso você use tab's que correspondam a 3 espaços e outro use tab's que correspondam a outra quantidade de espaços.
Em linguagens com Python, a indentação serve para delimitar os blocos de código.
Exemplo de código indentado.
Comandos para navegar no sistema de arquivos
Sistema de Arquivos é onde os arquivos são armazenados. Simplificadamente, esse sistema é composto pelo dispositivo de armazenamento, hardware de comunicação e software para uso e visualização. Não precisa haver um único dispositivo de armazenamento, nem tipos de dispositivos iguais. Também não há necessidade do hardware de comunicação ser uniforme, muito menos o software (encrenca à vista). O Sistema de Arqivos faz parte do Sistema Operacional.
Dada a concentração de uso de sistemas operacionais em algumas marcas e em duas categorias:
Trabalharemos em linha de comando e somente as operações básicas.
Sempre que abrimos o terminal (linha de comando) estamos operando sobre algum diretório.
se não tiver argumento de chamada então assume diretório corrente,
Todos os comandos têm help.
Em LINUX use
<comando> --help
em Windows
<comando> /?
Post de 2015/2016 sobre o assunto.
Dada a concentração de uso de sistemas operacionais em algumas marcas e em duas categorias:
- POSIX e Windows, acho suficiente mencionar os dois. POSIX é a norma que uniformiza todos os sistemas operacionais do tipo UNIX, entre eles LINUX, Android (que é uma variante de LINUX), BSD (Berkeley Software Distribution), iOS (uma variante de BSD) se aproximam do que está nessa norma.
- Windows é o sistema operacional desenvolvido, mantido e comercializado pela Microsoft.
Trabalharemos em linha de comando e somente as operações básicas.
Sempre que abrimos o terminal (linha de comando) estamos operando sobre algum diretório.
se não tiver argumento de chamada então assume diretório corrente,
Operação | Comando POSIX | Comando Windows | Nota |
Informa diretório corrente | pwd | cd | |
Lista conteúdo do diretório indicado | ls | dir | |
Cria diretório | mkdir | md | |
Remove diretório | rmdir | rd | |
Vai para diretório | cd | cd | |
Copia arquivo | cp | copy | |
Remove arquivo | rm | del | |
Renomeia arquivo | mv | ren | |
Move arquivo arquivo | mv | move |
Todos os comandos têm help.
Em LINUX use
em Windows
quarta-feira, 8 de março de 2017
Compiladores on-line
Há uma variedade de compiladores e ambientes de execução Java na internet.
Neles o usuário pode digitar código e vê-lo sendo executado.
Vejo algumas características:
- não é necessário instalar Java na máquina local;
- pode ser acessado através de qualquer navegador;
- não permite projetos grandes, com muitas classes e vários arquivos.
Na minha opinião, são bom recurso quando deseja-se demonstrar alguma funcionalidade de java ou quando deseja-se comparar a execução do mesmo programa em dois ambientes diferentes.
Alguns compiladores on-line:
- compilejava
- jdoodle
- ideone
Neles o usuário pode digitar código e vê-lo sendo executado.
Vejo algumas características:
- não é necessário instalar Java na máquina local;
- pode ser acessado através de qualquer navegador;
- não permite projetos grandes, com muitas classes e vários arquivos.
Na minha opinião, são bom recurso quando deseja-se demonstrar alguma funcionalidade de java ou quando deseja-se comparar a execução do mesmo programa em dois ambientes diferentes.
Alguns compiladores on-line:
- compilejava
- jdoodle
- ideone
terça-feira, 7 de março de 2017
Fontes de Informação
As referências recomendadas, além das postagens neste blog são:
Livro gratuito: "Introdução à Ciência da Computação com Java e Orientação a Objetos
Livro na biblioteca da EACH: Java como programar - H.M. Deitel, P.J. Deitel ; tradução e revisão técnica Carlos Arthur Lang Lisbôa. Porto Alegre Bookman 2003. 1386 p. +1 CD-ROM..
Programação de Computadores - UNIVESP TV
Introduction to Programming in Java - MIT Open Courseware
Documentação do Java
The Java Tutorials
Java API
Download e Instalação do Java da Oracle
Não há um único livro-texto para a disciplina. Aconselha-se que o estudante procure entre várias fontes de informação aquela melhor adequada ao seu modo de aprendizagem.
Postagem do curso de 2015/2016 sobre o assunto
Livro gratuito: "Introdução à Ciência da Computação com Java e Orientação a Objetos
Livro na biblioteca da EACH: Java como programar - H.M. Deitel, P.J. Deitel ; tradução e revisão técnica Carlos Arthur Lang Lisbôa. Porto Alegre Bookman 2003. 1386 p. +1 CD-ROM..
Programação de Computadores - UNIVESP TV
Introduction to Programming in Java - MIT Open Courseware
Documentação do Java
The Java Tutorials
Java API
Download e Instalação do Java da Oracle
Não há um único livro-texto para a disciplina. Aconselha-se que o estudante procure entre várias fontes de informação aquela melhor adequada ao seu modo de aprendizagem.
Postagem do curso de 2015/2016 sobre o assunto
Critérios de Avaliação
O semestre é dividido em dois períodos. O primeiro período corresponde é o de aulas, o segundo período ao de recuperação. O calendário USP 2019 contém as datas de referência.
Segundo o Regimento Geral artigo 84 (consultado em 07.03.2017), Artigo 84 – Será aprovado, com direito aos créditos correspondentes, o aluno que obtiver nota final igual ou superior a cinco e tenha, no mínimo, setenta por cento de freqüência na disciplina.
No primeiro período haverá duas provas. O estudante que deixar de fazer uma delas pode fazer a prova substitutiva sem necessidade de justificativa adicional (critério estabelecido pelo docente).
P1: 25.04.2019
P2:20.06.2019 antecipado para 14.06.2019
PSUB: 27.06.2019
A média das provas é calculada: MP=0.4P1+0.6*P2
No primeiro período haverá 2 Exercícios-programa (EP). Tarefas realizadas em casa, entregues através do Tidia*
* Este é o Tidia 4, é possível que eu passe para o e-disciplinas.
É tarefa para o semestre fazer quaisquer 50 exercícios no site https://www.urionlinejudge.com.br/judge/pt/login. A linguagem de programação é JAVA. A checagem será feita presencialmente até 14.06. Ou seja, quem chegar aos 50 exercícios feitos mostra a tela de estatísticas e recebe 10 pela tarefa. Quem não chegar recebe nota proporcional à quantidade de exercícios feitos até o dia 14. Não serão aceitas tentativas de entrega após o dia 14 e não será aceito para cômputo de nota a resolução de mais de 50 exercícios.
divulgação entrega
EP1 20.04 18.05 (22h)
EP2 18.05 15.06 (22h)
A média dos EP é calculada MEP=(EP1+EP2+URI)/3
A média no primeiro período é calculada: M1=0.8*MP+0.2*MEP
Tem nota para aprovação quem obtiver M1>=5.0 (obs.: 4,95<5.0)
No segundo período é realizada a avaliação de recuperação. Pode fazê-la quem tiver M1>=3.0
PREC: 11.07.2017
A média no segundo período é calculada:
M2=(M1+PREC)/2
Tem nota para aprovação quem obtiver M2>=5.0 (obs.: 4,95<5.0)
A frequência mínima é de 70%, comprovada por assinatura em lista de presença. O abono de faltas é regulamentado por portaria da Comissão de Graduação.
Segundo o Regimento Geral artigo 84 (consultado em 07.03.2017), Artigo 84 – Será aprovado, com direito aos créditos correspondentes, o aluno que obtiver nota final igual ou superior a cinco e tenha, no mínimo, setenta por cento de freqüência na disciplina.
No primeiro período haverá duas provas. O estudante que deixar de fazer uma delas pode fazer a prova substitutiva sem necessidade de justificativa adicional (critério estabelecido pelo docente).
P1: 25.04.2019
P2:
PSUB: 27.06.2019
A média das provas é calculada: MP=0.4P1+0.6*P2
No primeiro período haverá 2 Exercícios-programa (EP). Tarefas realizadas em casa, entregues através do Tidia*
* Este é o Tidia 4, é possível que eu passe para o e-disciplinas.
É tarefa para o semestre fazer quaisquer 50 exercícios no site https://www.urionlinejudge.com.br/judge/pt/login. A linguagem de programação é JAVA. A checagem será feita presencialmente até 14.06. Ou seja, quem chegar aos 50 exercícios feitos mostra a tela de estatísticas e recebe 10 pela tarefa. Quem não chegar recebe nota proporcional à quantidade de exercícios feitos até o dia 14. Não serão aceitas tentativas de entrega após o dia 14 e não será aceito para cômputo de nota a resolução de mais de 50 exercícios.
divulgação entrega
EP1 20.04 18.05 (22h)
EP2 18.05 15.06 (22h)
A média dos EP é calculada MEP=(EP1+EP2+URI)/3
A média no primeiro período é calculada: M1=0.8*MP+0.2*MEP
Tem nota para aprovação quem obtiver M1>=5.0 (obs.: 4,95<5.0)
No segundo período é realizada a avaliação de recuperação. Pode fazê-la quem tiver M1>=3.0
PREC: 11.07.2017
A média no segundo período é calculada:
M2=(M1+PREC)/2
Tem nota para aprovação quem obtiver M2>=5.0 (obs.: 4,95<5.0)
A frequência mínima é de 70%, comprovada por assinatura em lista de presença. O abono de faltas é regulamentado por portaria da Comissão de Graduação.
Assinar:
Postagens (Atom)