sexta-feira, 27 de março de 2015

0.0.0.17.7 - Aula 8 - 27.03

Tarefa para ser feita por grupos de três ou quatro pessoas para entrega através do Tidia, até o fim da aula (11h45min). Valor: 0,5pt na prova 2.

Implemente um conversor de base 10 para base 12 e vice-versa. Os dígitos na base 12 são as primeiras doze letras maiúsculas d={'A','B','C','D','E','F','G','H','I','J','K','L'}.

Use comandos de repetição e seleção.

Por facilidade, os números na base 10 devem ser armazenados em variáveis de tipo inteiro e números na base 12 em variáveis de tipo String.

As entradas devem ser lidas do teclado e as saídas escritas na tela.

Para entrada de números na base 12, caso o String digitado não seja um número na base 12 na representação pedida, o programa deve indicá-lo e permitir que o usuário digite um novo número.

Inclua no programa um cabeçalho em forma de comentário contendo os nomes e números USP dos integrantes dos grupos.

Em 09.04 dois alunos serão sorteados para explicar a solução de seu grupo. Será atribuído conceito pela apresentação.

Dicas: para saber o comprimento de um String use o método length( ), para obter o i-ésimo caracter use o método charAt(i). Para ler um String use  o método next()

String n="GFJD";
int a=n.length(); // a vai receber 4.
char c=n.charAt(2);  // a vai receber 'J' o primeiro caracter tem índice 0
// neste exemplo a conversão para decimal resulta em 11199

Anotações:
   Em geral as avaliações consistem em 4 questões das quais pelo menos uma pede que o estudante escreva um programa como nesta tarefa.
   Caso não tenha completado a tarefa em tempo, envie o que fez.
   Há alguma tolerância no horário de entrega (programei no Tidia para ser até as 12h).

quinta-feira, 26 de março de 2015

0.0.0.17.6.7 - Dias no mês 8 

01 import java.util.Scanner;
02 
03 /** Incompleto
04 */
05 public class Transporte8 {
06     /* 1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12 mes*/
07     /*31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31*/
08     /* 1,  2,  3,  4,  5,  6,  7,  9, 10, 11, 12, 13 mes + mes>>3*/
09     public static void main (String[] args){
10         Scanner sc;
11         sc = new Scanner (System.in);
12         int dias=-1;
13         int mes;
14         int conta=0;
15         System.out.println ("digite o mês (1..12)");
16         mes=sc.nextInt();
17         conta++;
18         
19             for (conta=0;((mes<1)||(mes>12))&&(conta<3);conta++) {
20                 System.out.println ("digite novamente o mês (1..12)");
21                 mes=sc.nextInt();
22             }
23         //System.out.println ("Depuracao " + (mes+mes>>3));
24         //System.out.println ("Depuracao " + (mes>>3));
25         if (((mes+(mes>>3))%2)==1) {
26             dias=31;
27         else if (mes==2){
28             dias=28;
29         else {
30             dias=30;
31         }
32         System.out.println ("Digite o preço da viagem ida e volta (separador de acordo com seu local).");
33         double preco=sc.nextDouble();
34         System.out.println ("Despesa com transporte = " (doubledias * preco);
35     }
36 }
Java2html

0.0.0.17.6.6 - Dias no mês 7

01 import java.util.Scanner;
02 
03 /** Isto começou com a proposta de projeto do calculador de
04     despesas. Um de vocês queria fazer o cálculo de acordo
05     com o mês, mas não sabia como (e queria criar uma classe
06     que representasse meses - e também não sabia como fazê-lo).
07     Espero que ele tenha pesquisado, tentado e encontrado sua
08     própria solução, ao invés de esperar a resposta pronta.
09     ESPERO ESTA ATITUDE DE TODOS VOCÊS.
10     Agora, uma semana depois, apresento a vocês algumas soluções
11     para esse problema como fechamento do assunto comandos de
12     seleção. Esta Ã© a solução usando testes aninhados, com outra
13     sintaxe e aproveita que até o mes 7 meses Ã­mpares tem 31
14     dias e a partir do 8, meses pares tem 31 dias.
15 */
16 public class Transporte7 {
17     /* 1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12 mes*/
18     /*31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31*/
19     /* 1,  2,  3,  4,  5,  6,  7,  9, 10, 11, 12, 13 mes + mes>>3*/
20     public static void main (String[] args){
21         Scanner sc;
22         sc = new Scanner (System.in);
23         int dias=-1;
24         int mes;
25         int conta=0;
26         System.out.println ("digite o mês (1..12)");
27         mes=sc.nextInt();
28         conta++;
29         while (((mes<1)||(mes>12))&&(conta<3)) {
30             System.out.println ("digite novamente o mês (1..12)");
31             mes=sc.nextInt();
32             conta++;
33         }
34         //System.out.println ("Depuracao " + (mes+mes>>3));
35         //System.out.println ("Depuracao " + (mes>>3));
36         if (((mes+(mes>>3))%2)==1) {
37             dias=31;
38         else if (mes==2){
39             dias=28;
40         else {
41             dias=30;
42         }
43         System.out.println ("Digite o preço da viagem ida e volta (separador de acordo com seu local).");
44         double preco=sc.nextDouble();
45         System.out.println ("Despesa com transporte = " (doubledias * preco);
46     }
47 }
Java2html

0.0.0.17.6.5 - Dias no mês 6

01 import java.util.Scanner;
02 
03 /** Isto começou com a proposta de projeto do calculador de
04     despesas. Um de vocês queria fazer o cálculo de acordo
05     com o mês, mas não sabia como (e queria criar uma classe
06     que representasse meses - e também não sabia como fazê-lo).
07     Espero que ele tenha pesquisado, tentado e encontrado sua
08     própria solução, ao invés de esperar a resposta pronta.
09     ESPERO ESTA ATITUDE DE TODOS VOCÊS.
10     Agora, uma semana depois, apresento a vocês algumas soluções
11     para esse problema como fechamento do assunto comandos de
12     seleção. Esta Ã© a solução usando testes aninhados, com outra
13     sintaxe e aproveita que até o mes 7 meses Ã­mpares tem 31
14     dias e a partir do 8, meses pares tem 31 dias.
15 */
16 public class Transporte6 {
17     /* 1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12 mes*/
18     /*31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31*/
19     /* 1,  2,  3,  4,  5,  6,  7,  9, 10, 11, 12, 13 mes + mes>>3*/
20     public static void main (String[] args){
21         Scanner sc;
22         sc = new Scanner (System.in);
23         int dias=-1;
24         int mes;
25         System.out.println ("digite o mês (1..12)");
26         mes=sc.nextInt();
27         while ((mes<1)||(mes>12)) {
28             System.out.println ("digite novamente o mês (1..12)");
29             mes=sc.nextInt();
30         }
31         //System.out.println ("Depuracao " + (mes+mes>>3));
32         //System.out.println ("Depuracao " + (mes>>3));
33         if (((mes+(mes>>3))%2)==1) {
34             dias=31;
35         else if (mes==2){
36             dias=28;
37         else {
38             dias=30;
39         }
40         System.out.println ("Digite o preço da viagem ida e volta (separador de acordo com seu local).");
41         double preco=sc.nextDouble();
42         System.out.println ("Despesa com transporte = " (doubledias * preco);
43     }
44 }
Java2html

0.0.0.17.6.4 - Dias no mês 5

01 import java.util.Scanner;
02 
03 /** Isto começou com a proposta de projeto do calculador de
04     despesas. Um de vocês queria fazer o cálculo de acordo
05     com o mês, mas não sabia como (e queria criar uma classe
06     que representasse meses - e também não sabia como fazê-lo).
07     Espero que ele tenha pesquisado, tentado e encontrado sua
08     própria solução, ao invés de esperar a resposta pronta.
09     ESPERO ESTA ATITUDE DE TODOS VOCÊS.
10     Agora, uma semana depois, apresento a vocês algumas soluções
11     para esse problema como fechamento do assunto comandos de
12     seleção. Esta Ã© a solução usando testes aninhados, com outra
13     sintaxe e aproveita que até o mes 7 meses Ã­mpares tem 31
14     dias e a partir do 8, meses pares tem 31 dias.
15 */
16 public class Transporte5 {
17     /* 1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12 mes*/
18     /*31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31*/
19     /* 1,  2,  3,  4,  5,  6,  7,  9, 10, 11, 12, 13 mes + mes>>3*/
20     public static void main (String[] args){
21         Scanner sc;
22         sc = new Scanner (System.in);
23         int dias=-1;
24         int mes;
25         do {
26             System.out.println ("digite o mês (1..12)");
27             mes=sc.nextInt();
28         while ((mes<1)||(mes>12));
29         //System.out.println ("Depuracao " + (mes+mes>>3));
30         //System.out.println ("Depuracao " + (mes>>3));
31         if (((mes+(mes>>3))%2)==1) {
32             dias=31;
33         else if (mes==2){
34             dias=28;
35         else {
36             dias=30;
37         }
38         System.out.println ("Digite o preço da viagem ida e volta (separador de acordo com seu local).");
39         double preco=sc.nextDouble();
40         System.out.println ("Despesa com transporte = " (doubledias * preco);
41     }
42 }
Java2html

quarta-feira, 25 de março de 2015

0.0.0.17.6 - Aula 7 - 26.03

Isto começou com a proposta de projeto do calculador de despesas. Um de vocês queria fazer o cálculo de acordo com o mês, mas não sabia como (e queria criar uma classe que representasse meses - e também não sabia como fazê-lo). Espero que ele tenha pesquisado, tentado e encontrado sua
 própria solução, ao invés de esperar a resposta pronta.
 ESPERO ESTA ATITUDE DE TODOS VOCÊS.
 Agora, uma semana depois, apresento a vocês algumas soluções para esse problema como fechamento do assunto comandos de seleção.

  • 0.0.0.17.6.0 é a solução usando switch
  • 0.0.0.17.6.1 é a solução usando testes aninhados
  • 0.0.0.17.6.2 é a solução usando testes em sequencia. Aproveita a exclusão (se o mês vale m, então não tem outros valores, logo, apenas uma atribuição de dias é executada.)
  • 0.0.0.17.6.3 é a solução usando testes aninhados, com outra sintaxe e aproveita que até o mes 7, meses ímpares tem 31 dias e a partir do 8, meses pares tem 31 dias.
Para apresentar os comandos de repetição: como você faria para repetir a entrada de meses enquanto o usuário não digitar um valor entre 1 e 12??

0.0.0.17.6.3 - Dias no mês 4

01 import java.util.Scanner;
02 
03 /** Isto começou com a proposta de projeto do calculador de
04     despesas. Um de vocês queria fazer o cálculo de acordo
05     com o mês, mas não sabia como (e queria criar uma classe
06     que representasse meses - e também não sabia como fazê-lo).
07     Espero que ele tenha pesquisado, tentado e encontrado sua
08     própria solução, ao invés de esperar a resposta pronta.
09     ESPERO ESTA ATITUDE DE TODOS VOCÊS.
10     Agora, uma semana depois, apresento a vocês algumas soluções
11     para esse problema como fechamento do assunto comandos de
12     seleção. Esta Ã© a solução usando testes aninhados, com outra
13     sintaxe e aproveita que até o mes 7 meses Ã­mpares tem 31
14     dias e a partir do 8, meses pares tem 31 dias.
15 */
16 public class Transporte4 {
17     /* 1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12 mes*/
18     /*31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31*/
19     /* 1,  2,  3,  4,  5,  6,  7,  9, 10, 11, 12, 13 mes + mes>>3*/
20     public static void main (String[] args){
21         Scanner sc;
22         sc = new Scanner (System.in);
23         System.out.println ("digite o mês (1..12)");
24         int mes=sc.nextInt();
25         int dias=-1;
26         if ((mes<1)||(mes>12)) {
27             System.out.println ("Mes desconhecido, terminando programa.");
28             System.exit (0);
29         }
30         if (((mes+mes>>3)%2)==1) {
31             dias=31;
32         else if (mes==2){
33             dias=28;
34         else {
35             dias=30;
36         }
37         System.out.println ("Digite o preço da viagem ida e volta (separador de acordo com seu local).");
38         double preco=sc.nextDouble();
39         System.out.println ("Despesa com transporte = " (doubledias * preco);
40     }
41 }
Java2html

0.0.0.17.6.2 - Dias no mês 3

01 import java.util.Scanner;
02 /** Isto começou com a proposta de projeto do calculador de
03     despesas. Um de vocês queria fazer o cálculo de acordo
04     com o mês, mas não sabia como (e queria criar uma classe
05     que representasse meses - e também não sabia como fazê-lo).
06     Espero que ele tenha pesquisado, tentado e encontrado sua
07     própria solução, ao invés de esperar a resposta pronta.
08     ESPERO ESTA ATITUDE DE TODOS VOCÊS.
09     Agora, uma semana depois, apresento a vocês algumas soluções
10     para esse problema como fechamento do assunto comandos de
11     seleção. Esta Ã© a solução usando testes em sequencia. Aproveita
12     a exclusão (se o mês vale m, então não tem outros valores, logo,
13     apenas uma atribuição Ã© executada.)
14 */
15 public class Transporte3 {
16     public static void main (String[] args){
17         Scanner sc;
18         sc = new Scanner (System.in);
19         System.out.println ("digite o mês (1..12)");
20         int mes=sc.nextInt();
21         int dias=-1;
22         if ((mes==1)||(mes==3)||(mes==5)||(mes==7)||(mes==8)||(mes==10)||(mes==12)) {
23             dias=31;
24         }
25         if (mes==2) {
26             dias=28;
27         }
28         if ((mes==4)||(mes==6)||(mes==9)||(mes==11)) {
29             dias=30;
30         }
31         if (dias==-1) {
32             System.out.println ("Mes desconhecido, terminando programa.");
33             System.exit (0);
34         }
35 
36         System.out.println ("Digite o preço da viagem ida e volta (separador de acordo com seu local).");
37         double preco=sc.nextDouble();
38         System.out.println ("Despesa com transporte = " (doubledias * preco);
39     }
40 }
Java2html

0.0.0.17.6.1 - Dias no mês 2

01 import java.util.Scanner;
02 
03 /** Isto começou com a proposta de projeto do calculador de
04     despesas. Um de vocês queria fazer o cálculo de acordo
05     com o mês, mas não sabia como (e queria criar uma classe
06     que representasse meses - e também não sabia como fazê-lo).
07     Espero que ele tenha pesquisado, tentado e encontrado sua
08     própria solução, ao invés de esperar a resposta pronta.
09     ESPERO ESTA ATITUDE DE TODOS VOCÊS.
10     Agora, uma semana depois, apresento a vocês algumas soluções
11     para esse problema como fechamento do assunto comandos de
12     seleção. Esta Ã© a solução usando testes aninhados
13 */
14 public class Transporte2 {
15     public static void main (String[] args){
16         Scanner sc;
17         sc = new Scanner (System.in);
18         System.out.println ("digite o mês (1..12)");
19         int mes=sc.nextInt();
20         int dias=-1;
21         if ((mes==1)||(mes==3)||(mes==5)||(mes==7)||(mes==8)||(mes==10)||(mes==12)) {
22             dias=31;
23         else {
24             if (mes==2) {
25                 dias=28;
26             else {
27                 if ((mes==4)||(mes==6)||(mes==9)||(mes==11)) {
28                     dias=30;
29                 else {
30                     System.out.println ("Mes desconhecido, terminando programa.");
31                     System.exit (0);
32                 }
33             }
34         }
35 
36         System.out.println ("Digite o preço da viagem ida e volta (separador de acordo com seu local).");
37         double preco=sc.nextDouble();
38         System.out.println ("Despesa com transporte = " (doubledias * preco);
39     }
40 }
Java2html

0.0.0.17.6.0 - Dias no mês 1

01 import java.util.Scanner;
02 
03 /** Isto começou com a proposta de projeto do calculador de
04     despesas. Um de vocês queria fazer o cálculo de acordo
05     com o mês, mas não sabia como (e queria criar uma classe
06     que representasse meses - e também não sabia como fazê-lo).
07     Espero que ele tenha pesquisado, tentado e encontrado sua
08     própria solução, ao invés de esperar a resposta pronta.
09     ESPERO ESTA ATITUDE DE TODOS VOCÊS.
10     Agora, uma semana depois, apresento a vocês algumas soluções
11     para esse problema como fechamento do assunto comandos de
12     seleção. Esta Ã© a solução usando switch
13 */
14 public class Transporte1 {
15     public static void main (String[] args){
16         /* leitor de teclado */
17         Scanner sc;
18         sc = new Scanner (System.in);
19         
20         /* leitura de teclado */
21         System.out.println ("digite o mês (1..12)");
22         int mes=sc.nextInt()// armazena o número do mês
23         
24         int dias=-1// armazena quantos dias tem o mês, ou -1 caso o mês seja desconhecido.
25         switch (mes) {
26             case 1:
27             case 3:
28             case 5:
29             case 7:
30             case 8:
31             case 10:
32             case 12
33                 dias=31;
34                 break;
35             case 4:
36             case 6:
37             case 9:
38             case 11:
39                 dias=30;
40                 break;
41             case 2:
42                 dias=28;
43                 break;
44             default:
45                 System.out.println ("Mes desconhecido, terminando programa.");
46                 System.exit (0);
47         }
48 
49         /* leitura de teclado */
50         System.out.println ("Digite o preço da viagem ida e volta (separador de acordo com seu local).");
51         double preco=sc.nextDouble();
52 
53         /* calcula o valor e escreve na tela. */
54         System.out.println ("Despesa com transporte = " (doubledias * preco);
55     }
56 }
Java2html