Faculdades Integradas Espírito-Santenses Unidade de Computação e Sistemas Curso Ciência da Computação Disciplina: Algoritmo I - 1º período (turma B) - 2009/1 Prof. Henrique Monteiro Cristovão Transição Scratch para Java Scratch é uma linguagem de programação com uma sintaxe extremamente simples. Isto faz com que a energia gasta para se resolver um problema seja canalizada para o planejamento e construção da solução do problema, ou seja, ela é ótima para quem está aprendendo a programar pela primeira vez pois não é preciso muito tempo para aprendizado da sua sintaxe. Mas, o Scratch possui várias limitações quando se pensa em uma programação arrojada e profissional, por isso, a disciplina de Algoritmo I será complementada com a linguagem Java por ser uma linguagem com muitas características positivas, entre elas: Gratuita; Portável : possui independência de plataforma - "write once run anywhere"; Segura: pode executar programas via rede com restrições de execução; Sintaxe similar a Linguagem C/C++. Facilidades de internacionalização - Suporta nativamente caracteres Unicode; Simplicidade na escrita de programas distribuídos; É distribuída com um vasto conjunto de bibliotecas (ou APIs). Veja mais características em http://algoritmofaesa.wikidot.com/sobrejava Neste endereço você também encontra duas boas apostilas para download. Como a sintaxe do Java não é simples como a do Scratch, serão apresentados vários algoritmos escritos em Scratch e a sua equivalência em Java. Download dos seis exemplos escritos em Java e Scratch. Exemplo 1: Exibir “Olá”. Versão Scratch: Versão Java: // Esta linha contém o nome da classe (programa) public class Exemplo01 { // Linha que define o ponto de partida da execução (método principal: main) public static void main(String[] args) { System.out.println("Olá"); } } Console: Olá Material para facilitar a transição Scrath para Java: 1/7 Exemplo 2: Solicitar um número ao usuário e exibir o seu dobro e a sua metade. Versão Scratch: Versão Java: // Importação necessária para usar a classe Scanner (entrada de dados via teclado) import java.util.Scanner; public class Exemplo02 { public static void main(String[] args) { System.out.println("Entre com um número - tecle ENTER:"); // Declaração da variável x para receber valores inteiros // e comando para entrada de número inteiros via teclado int x = new Scanner(System.in).nextInt(); int dobro = x*2; // Como x é inteiro é necessário colocar ".0" no "2" para que a divisão // retorne um número real, e não um número inteiro double metade = x/2.0; // O operador "+" é usado para concatenar elementos // (desde que pelo menos um deles seja string) System.out.println("O dobro deste número é: " + dobro); System.out.println("A metade deste número é: " + metade); } } Console: Entre com um número - tecle ENTER: 25 O dobro deste número é: 50 A metade deste número é: 12.5 Material para facilitar a transição Scrath para Java: 2/7 Exemplo 3: Solicitar a idade do usuário e em seguida exibir se ele é maior ou menor de idade. Versão Scratch: Versão Java: import java.util.Scanner; public class Exemplo03 { public static void main(String[] args) { System.out.println("Qual a sua idade? "); int idade = new Scanner(System.in).nextInt(); // A identação do programa é muito importante para a sua legibilidade // Observe o deslocamento à direita dos comandos internos da // estrutura condicional. Faça automaticamente com CTRL-A e CTRL-I if(idade > 17) System.out.println("Você é maior de idade"); else System.out.println("Você é menor de idade"); } } Console: Qual a sua idade? 18 Você é maior de idade Material para facilitar a transição Scrath para Java: 3/7 Exemplo 4: Calcular a mádia de duas notas do usuário e em sguida falar se ele foi aprovado ou reprovado. A nota para aprovação é maior ou igual a sete. Versão Scratch: Versão Java: import java.util.Scanner; public class Exemplo04 { public static void main(String[] args) { System.out.println("Entre com as duas notas: "); double nota1 = new Scanner(System.in).nextDouble(); double nota2 = new Scanner(System.in).nextDouble(); double media = (nota1 + nota2)/2; if(media >= 7) System.out.print("Parabéns, você está aprovado com média igual a "); else System.out.print("Que pena! Você não foi aprovado. Sua média foi "); // Observe que o próximo comando está fora da estrutura condicional // por isso ele será executado em todos os casos // Quanto existirem mais linhas dentro do "if" ou "else", // elas devem ser colocadas entre chaves "{" e "}" System.out.println(media); } } Console: Entre com as duas notas: 7,5 9,5 Parabéns, você está aprovado com média igual a 8.5 Material para facilitar a transição Scrath para Java: 4/7 Exemplo 5: Implementar um jogo onde o usuário tenta advinhar três números sorteados. Versão Scratch: Material para facilitar a transição Scrath para Java: 5/7 Versão Java: import java.util.Scanner; public class Exemplo05 { public static void main(String[] args) { System.out.println("Entre com os três palpites (de 1 a 10): "); int palpite1 = new Scanner(System.in).nextInt(); int palpite2 = new Scanner(System.in).nextInt(); int palpite3 = new Scanner(System.in).nextInt(); int acertos = 0; // Math.random() retorna um número sorteado de zero a menor que 1 // (int) antes de um valor trunca as casas decimais tornando-o inteiro int numero1 = ((int)(Math.random()*10)) + 1; int numero2 = ((int)(Math.random()*10)) + 1; int numero3 = ((int)(Math.random()*10)) + 1; // "||" = "OU" // "&&" = "E" if(palpite1==numero1 || palpite1==numero2 || palpite1==numero3) acertos++; if(palpite2==numero1 || palpite2==numero2 || palpite2==numero3) acertos++; if(palpite3==numero1 || palpite3==numero2 || palpite3==numero3) acertos++; // "else if" é usado para colocar mais alternativas na estrutura condicional if(acertos == 0) System.out.print("Você errou os três números!!!"); else if(acertos == 1) System.out.print("Humm, você acertou um número"); else if(acertos == 2) System.out.println("Parabéns, você acertou dois números!"); else System.out.println("Excepcional!!! Você acertou os três números!!!"); } } Console: Entre com os três palpites (de 1 a 10): 3 5 7 Parabéns, você acertou dois números! Material para facilitar a transição Scrath para Java: 6/7 Exemplo 6: Calcular a média das notas de uma turma de alunos. A quantidade de alunos deve ser solicitada ao usuário. Versão Scratch: Versão Java: import java.util.Scanner; public class Exemplo06 { public static void main(String[] args) { int notaNumero; double soma = 0.0, nota; System.out.println("Quantas notas?"); int qtdeNotas = new Scanner(System.in).nextInt(); // Comando de repetição "for": executa o bloco (entre chaves) // enquanto a expressão do meio for verdadeira // A primeira expressão é executada uma vez no início. // A terceira expressão é sempre executada logo após o bloco for(notaNumero = 1; notaNumero <= qtdeNotas; notaNumero++) { System.out.println("Entre com a nota número " + notaNumero + ": "); nota = new Scanner(System.in).nextDouble(); soma += nota; } double media = soma/qtdeNotas; System.out.println("A média das notas é " + media); } } Console: Quantas notas? 4 Entre com a nota número 1: 6,5 Entre com a nota número 2: 7 Entre com a nota número 3: 8,5 Entre com a nota número 4: 9 A média das notas é 7.75 Material para facilitar a transição Scrath para Java: 7/7