SlideShare uma empresa Scribd logo
1 de 32
Baixar para ler offline
Instituto Politécnico de Setúbal



Escola Superior de Tecnologia



Departamento de Sistemas e Informática




Aulas de Laboratório



Disciplina de Introdução à Programação
Ano Lectivo 2004/2005
Séries de Exercícios de Introdução à Programação – Laboratórios



 Série 1: Introdução ao Ambiente de Desenvolvimento


                                 1. Criação de Projectos


    Ao longo desta série serão seguidas as instruções do guia “Instalação e utilização do
    Gel” que indicam o modo de criar um projecto, criar classes, associar ficheiros,
    compilar, executar,etc.

    É aconselhavel, para cada um dos exercícios que se seguem, criar uma directoria
    individual e nela criar o projecto. Assim termos por exemplo:

    C:My DocumentsProjectosExemplo1ficheiros do projecto

    Este guia destina-se à prática de utilização do ambiente de desenvolvimento de modo a
    existir um primeiro contacto com:

    1.   O sistema de janelas do GEL
    2.   O sistema de Directorias e Ficheiros
    3.   Os projectos do GEL
    4.   O processo de escrita, compilação e execussão de programas
    5.   A linguagem JAVA

    Não é o objectivo deste guia a compreensão total do código Java nos exemplos seguintes




2/32                                                                                   © DSI
Séries de Exercícios de Introdução à Programação – Laboratórios



                                     2. Exemplos


   Exemplo 1

   Enunciado: Escreva um programa em Java que imprima uma frase.

   Código:

        public class Exemplo1 {
            public static void main(String[] args) {
                System.out.println("Este é um programa simples");
            }
        }




   Exemplo 2

   Enunciado: Escreva um programa em Java que peça ao utilizador um número inteiro e o
              imprima.

   Código:

        public class Exemplo2 {
            public static void main(String[] args) {
                System.out.println("Introduza um número
        inteiro");
                int num=Le.umInt();
                System.out.println("O número lido é "+num);
            }
        }




© DSI                                                                               3/32
Séries de Exercícios de Introdução à Programação – Laboratórios

Exemplo 3

    Enunciado: Escreva um programa em Java que peça ao utilizador dois números inteiros,
               os imprima e imprima a sua soma.

    Código:

       public class Exemplo3 {
           public static void main(String[] args) {
                System.out.println("Introduza 2 números
       inteiros");
                int num1=Le.umInt();
                System.out.println("O nº é "+num1);
                int num2=Le.umInt();
                System.out.println("O nº é "+num2);
                int num3=num1+num2;
                System.out.println("A soma de "+num1+"+"+num2+" é
       "+num3);
           }
       }




Exemplo 4

    Enunciado: Escreva um programa em Java que calcule a area e o perimetro de uma
               circunferência a partir do seu raio..

    Código:

       public class Exemplo4 {
           public static void main(String[] args) {
               double area, perimetro;
               double PI=3.1415926;
               System.out.println("Este programa calcula o
       perimetro e a area de uma circunferência a partir do seu
       raio");
               System.out.println("Qual o raio da
       circunferência?");
               double raio = Le.umDouble();
               area = PI * raio * raio;
               perimetro = 2 * PI * raio;
               System.out.println("Raio = "+raio);
               System.out.println("Area = "+area);
               System.out.println("Perimetro = "+perimetro);
           }
       }




4/32                                                                              © DSI
Séries de Exercícios de Introdução à Programação – Laboratórios

    Exemplo 5

    Enunciado: Escreva um programa em Java que peça ao utilizador um número e diga se
               esse número é negativo ou positivo.

    Código:

        public class Exemplo5 {
            public static void main(String[] args) {
                float a;
                System.out.println("Introduza um número");
                a = Le.umFloat();
                if (a<0) {
                    System.out.println("O número "+a+" é
        negativo");
                }
                else {
                    System.out.println("O número "+a+" é
        positivo");
                }
            }
        }




    Exemplo 6

    Enunciado: Altere o programa anterior de modo a que sejam pedidos números até ser
    introduzido o valor zero.

    Código:

        public class Exemplo6 {
            public static void main(String[] args) {
                float a;
                do {
                    System.out.println("Introduza um número");
                    a = Le.umFloat();
                    if (a<0) {
                       System.out.println("O número "+a+" é
        negativo");
                    }
                    else if (a>0) {
                       System.out.println("O número "+a+" é
        positivo");
                    }
                    else {
                       System.out.println("O número "+a+" não é
        positivo nem negativo");
                    }
                } while (a!=0);
            }
}




© DSI                                                                                5/32
Séries de Exercícios de Introdução à Programação – Laboratórios

  Exemplo 7

    Enunciado: Escreva um programa em Java que imprima os números inteiros de 4 a 10
    inclusive.

    Código:

       public class Exemplo7 {
           public static void main(String[] args) {
               int i;
               for (i=4;i<=10;i++) {
                  System.out.println("i é: "+i);
               }
           }
       }




6/32                                                                            © DSI
Séries de Exercícios de Introdução à Programação – Laboratórios



 Série 2: Tipos Primitivos

Objectivos da Série:

Com esta série de problemas pretende-se que o aluno:
   1. Aprenda a escolher o tipo de dados elementar mais apropriado à representação de
       quantidades inteiras.
   2. Domine a utilização de tipos primitivos de dados

Exercício 1
Mostre como podem os seguintes identificadores ser associados aos respectivos tipos de
dados:
       indice -> inteiro
       cmax -> real
       cmin -> real
       codigo -> caracter
       estado -> booleano

Exercício 2
Qual o valor das expressões constantes da tabela 1? Escreva um programa para verificar as
soluções por si encontradas.

                                   12*13/5%2+10-5
                                   12/13/5%2+10-5
                                   12%13/5%2+10-5
                                   12+13/5%5+10-5
                                   12-13/5%2+10-5
                                          Tabela 1


Exercício 3
O programa da figura 1 usa o tipo de dado elementar short:
class ShortEg
{
  public static void main ( String[] args )
  {
    short value = 32;
    System.out.println("A short: " + value);
  }
}
                                       Figura 1

Alínea A
Crie um ficheiro denominado ShortEg.java, compile-o e corra-o. Verifique o que o programa
escreve no painel de mensagens.
Alínea B
Edite o programa e altere o valor 32 para um outro valor inteiro relativamente baixo,
digamos 356. Compile e corra o programa. Em principio tudo deve correr bem.
Alínea C
Altere o valor para 90000 e tente compilar o programa. O que é que acontece? Porquê? Edite
o programa e altere a palavra “short” para “int”. Compile e corra o programa. Qual a
diferença entre esta e a alínea anterior?




© DSI                                                                                    7/32
Séries de Exercícios de Introdução à Programação – Laboratórios

Exercício 4
O programa da figura 2 usa o tipo de dado elementar double:
class DoubleEg
{
  public static void main ( String[] args )
  {
    double value = 32;
    System.out.println("A double: " + value);
  }
}
                                       Figura 2

Alínea A
Compile e corra o programa. A saída (o que o programa escreve no painel de mensagens)
deste programa difere de alguma forma da saída da alínea A do exercício nº3?
Alínea B
Altere o valor da variável B para um valor que seja demasiado grande para uma variável do
tipo double. Vai precisar de usar notação científica para o conseguir.

Exercício 5
O programa da figura 3 usa o tipo de dados elementar char:
class CharEg
{
  public static void main ( String[] args )
  {
    char ch = 'A' ;
    System.out.println("A char: " + ch );
  }
}
                                       Figura 3
Experimente o seguinte:
   1) Troque o 'A' por 'Z' compile e corra o programa.
   2) Troque o 'A' por 'AA' tente compilar o programa.
   3) Troque o 'A' por ' ' compile e corra o programa. Note que existe um espaço entre
       as duas plicas.
   4) Troque o 'A' por '' tente compilar o programa. Note que não existe nada entre as
       duas plicas.
   5) Troque o 'A' por "A" tente compilar o programa.

Exercício 6
Para o programa apresentado na figura 4:
Public class IncrementaDecrementa
{ public static void main (String[] args)
   { Boolean b = false;
      char c = ‘r’;
      byte j = 127;
      short k 32767;
      Syste.out.println(“c= “ + c);
      ++c;
      System.outprintln(“c= “ + c);
      ++c;
      System.outprintln(“c= “ + c);
      Systemout.println(“j= “ + j);
      --j
      System.out.println(“j= “ + j);
      ++j;
      System.outprintln(“j= “ + j)
      System.out.println(“k= “ + k);
      K -=4;
      System.out.println(“k= “ + k);
      K +=5;




8/32                                                                                © DSI
Séries de Exercícios de Introdução à Programação – Laboratórios

      System.out.println(“k= “+ k);
      }
}
                                          Figura 4

Alínea A
Corrija os erros sintácticos do programa.


Alínea B
Escreva o resultado de cada uma das instruções da 6ª à 21ª linha de código.



Exercício 7
Para o programa da figura 5: (note que está escrito a duas colunas)
public class ConverteExpandindo {                                 d = temp;
  /**Main method*/                                                temp = f;
  public static void main(String[] args) {                        f = l;
    // Escreve no painel de mensagens                             System.out.println(f);
    {   double d = 1.7E308;                                       f = i;
        float f = 3.4E38f;                                        System.out.println(f);
        long   l = 1234567890123456789L;                          f = c;
        int    i = 1234567890;                                    System.out.println(f);
        char   c = 'z';                                           f = s;
        short s = 32767;                                          System.out.println(f);
        byte   b = 127;                                           f = b;
        double temp;                                              System.out.println(f);
        System.out.println(d);                                    f = (float) temp;
        System.out.println(f);                                    System.out.println(f);
        System.out.println(l);                                    temp = i;
        System.out.println(i);                                    i = c;
        System.out.println(c);                                    System.out.println(i);
        System.out.println(s);                                    i = s;
        System.out.println(b);                                    System.out.println(i);
        temp = d;                                                 i = b;
        d = f;                                                    System.out.println(i);
        System.out.println(d);                                    i = (int) temp;
        d = l;                                                    System.out.println(i);
        System.out.println(d);                                    temp = c;
        d = i;                                                    c = (char) s;
        System.out.println(d);                                    System.out.println(c);
        d = c;                                                    c = (char) b;
        System.out.println(d);                                    System.out.println(c);
        d = s;                                                    c = (char) temp;
        System.out.println(d);                                    System.out.println(c);
        d = b;                                                      }
        System.out.println(d);                                }
                                                          }

                                          Figura 5

Alínea A
Qual a resultado de cada uma das instruções de saída?
Alínea B
Quais as instruções de atribuição que originaram erros?




© DSI                                                                                  9/32
Séries de Exercícios de Introdução à Programação – Laboratórios



Exercício 8
Examine o programa da figura 6
class example
{
  public static void main ( String[] args )
  {
    long   hoursWorked = 40;
    double payRate     = 10.0, taxRate = 0.10;
    System.out.println("Hours Worked: " + hoursWorked );
    System.out.println("pay Amount : " + (hoursWorked * payRate) );
    System.out.println("tax Amount : " + (hoursWorked * payRate * taxRate) );
  }
}
                                       Figura 6

Alínea a
Modifique-o por forma a que cada variável seja declarada individualmente e não seja
inicializada aquando da declaração. Em seguida escreva três instruções de atribuição para
associar o valor a cada uma das variáveis. Compile, corra o programa e examine a sua saída.
Alínea B
Agora vamos tentar quebrar o programa.
1) Remova uma das declarações de variáveis. Consegue compilar o programa?
2) Agora remova uma das instruções de atribuição que inicializam uma das variáveis.
Quando é que o problema é detectado?

Exercício 9

Considere as declarações de atribuição indicadas abaixo. Mostre o que fica guardado em
iresult, fresult e sresult após cada atribuição. Basta verificar até à terceira casa decimal.

int iresult,num1=25, num2=40, num3=17, num4=5;
int num5=-14, num6=-27;
double fresult, val1=17.0, val2=12.78;
String sresult, title=”Java Software Solutions”;

iresult= num1/num4; fresult=num1/num4; iresult=num3/num4; fresult=num3/num4;
fresult=val1/num4; fresult=val1/val2; iresult=num1/num2; fresult=num1/num2;
fresult=    (double)    num1/num2;   fresult=num1/(double)num2;    fresult=    (double)
(num1/num2),3);
iresult=   (int)    (val1/num4);   fresult=   (int)    (val1/num4);   fresult=    (int)
((double)num1/num2);
iresult= num3%num4; iresult=num2%num3; iresult=num3%num2; iresult=num2%num4;
iresult=num5%num4; iresult=num6%num5; iresult=title.length();fresult=title.length();
iresult=title.indexOf(‘t’);                                iresult=title.indexOf(‘q’);
iresult=title.lastIndexOf(‘a’);
sresult=title.toUpperCase();                           sresult=title.replace(‘o’,’X’);
sresult=title.substring(8);
sresult=title.substring(8,16); iresult=(title.substring(8,16)).length();
sresult=title+num1; sresult=title+num1+num2; sresult=title+(num1+num2);
iresult=Math.abs(num6); iresult=Math.abs(num1-num2); fresult=Math.sqrt(num2);
fresult=Math.pow(num4,3); iresult=Math.max(num2,num3); iresult=Math.floor(val2);
iresult=Math.ceil(val2); fresult=Math.sin(num2 + num1*2); fresult=Math.PI*num4;
fresult=Math.pow(title.length(),2)+num3*Math.sqrt(num3/num4);
                                       Figura 7




10/32                                                                                 © DSI
Séries de Exercícios de Introdução à Programação – Laboratórios

Exercício 10
Indique para as expressões abaixo os resultados.
Assuma a seguinte declaração:
Random rand= new Random( );

    1. rand.nextInt();
    2. Math.abs(rand.nextInt())%20;
    3. Math.abs(rand.nextInt()%20);
    4. Math.abs(rand.nextInt())% 8 + 1;
    5. Math.abs(rand.nextInt())% 45 + 10;
    6. Math.abs(rand.nextInt())% 100 - 50;
    7. rand.nextInt() % 50;
    8. rand.nextFloat();
    9. Math.random();
    10. Math.random()*8;
    11. (int)Math.random()*20;
    12. (int)Math.random()*20 + 1;


Exercício 11
Para os exercícios seguintes escreva uma expressão usando o Objecto Random para gerar um
número aleatório na gama de valores especificada (inclusive).
    1. 0 a 10
    2. 0 a 500
    3. 1 a 10
    4. 1 a 500
    5. 25 a 50
    6. –10 a 15


Exercício 12
Escreva uma expressão usando o método random da classe Math para gerar os números
aleatórios na gama de valores especificada.
    1. 0 a 10
    2. 0 a 500
    3. 1 a 10
    4. 1 a 500
    5. 25 a 50
    6. –10 a 15




© DSI                                                                                11/32
Séries de Exercícios de Introdução à Programação – Laboratórios




Série 3: Entrada e saída de dados

Objectivos da Série:
Com esta série de problemas pretende-se que o aluno:
   3. Aprenda a escrever no ecrã informação;
   4. Aprenda a ler varios tipos de formatos de dados introduzidos pelo utilizador.

Exercício 1
Considere que está interessado em calcular o valor do polinómio de 2º grau apresentado na
figura 5 para diferentes valores de X.
                                         3X2 -8X + 4
Escreva um programa que inclui uma variável de dupla precisão X. Atribua-lhe um valor.
Escreva uma instrução que calcule o valor do polinómio e armazene o resultado numa outra
variável. Finalmente escreva o resultado sob a forma: para X = 4.0 o resultado é 20.0.

Exercício 2
Escreva um programa que calcule a média de precipitação de três meses, Abril, Maio e
junho. Declare e inicialize uma variável com a precipitação de cada mês, calcule a média e
escreva o resultado soba a forma:
Precipitação em Abril:   12.
Precipitação em Maio:    14.
Precipitação em Junho    8
Média da precipitação:   11.333333
Para alinhar os valores numéricos use o caracter de tabulação ‘t’ como parte da string de
caracteres nas instruções de saída. Verifique se o programa apresenta os resultados correctos.

Exercício 3
Escreva um programa para resolver cada uma das seguintes situações
a) Ler um número inteiro, multiplicá-lo por 2 e escrever o resultado.
b) Ler dois números inteiros e escrever a sua soma, diferença e produto.
c) Ler dois números reais e escrever a sua soma, diferença e produto.

Exercício 4
Suponha que um café tem a seguinte ementa: prego: 3.5€, Batatas fritas: 1€, Sumo: 0.9€,
Bolo: 0,8€, Café: 0,45€. Solicite o numero de doses de cada um dos comestíveis acima
indicados e passe uma factura descriminada.

Exercício 5
Escreva um programa para calcular a média de um conjunto de 10 números inseridos pelo
utilizador.

Exercício 6
Faça um programa que calcule a taxa de juro de uma conta bancária. Desta forma, terá de
pedir ao utilizador que introduza o montante, a taxa de juro e o número de anos. De seguida,
deve calcular os juros utilizando a formula:
                Montante_final = montante * (taxa_juro / 100) * numero_anos
Por fim, deve mostrar no ecrã todos os dados obtidos da seguinte forma:
Montante: 5000 €
Taxa de Juro: 2,5%
Numero de anos: 5
Montante final: 5625 €




12/32                                                                                  © DSI
Séries de Exercícios de Introdução à Programação – Laboratórios

Exercício 7
Desenvolva um programa que peça ao utilizador três números inteior, guarde-os em três
variaveis (a, b e c) e troque a ordem de forma a que:
    1) o valor que estava na variavel a passe a ser o que estava na variavel b;
    2)    o valor que estava na variavel b passe a ser o que estava na variavel c;
    3) o valor que estava na variavel c passe a ser o que estava na variavel a;
Por fim escreva no ecrã o novo valor de cada variavel, com o seguinte formato:
a = 10;

b = 4;

c = 1;


Exercício 8
Faça um pequeno programa que mostre no ecrã os seu dados pessoais.

Exercício 9
Altere o programa desenvolvido no exercício anterior de forma a introduzir os seu dados
pessoais e só no fim é que mostra todos os seus dados pessoais de uma só vez.




© DSI                                                                                  13/32
Séries de Exercícios de Introdução à Programação – Laboratórios




Série 4: Instruções de selecção (IF e SWITCH)

Objectivos da Série:
Com esta série de problemas pretende-se que o aluno:
   1. Aprenda a usar as estruturas de selecção if e switch
   2. Domine a utilização das estruturas if e switch nas suas várias formas.

Exercício 1
Este exercício deve utilizar a intrução de selecção if.
Alínea A
Escreva um programa para ordenar dois inteiros inseridos pelo utilizador.
Alínea B
Escreva um programa para ordenar três inteiros inseridos pelo utilizador.
Alínea C
Escreva um programa para ordenar quatro inteiros inseridos pelo utilizador.

Exercício 2
Construa um programa que verifica se um número é par ou impar, numero esse introduzido
pelo utilizador.

Exercício 3
Crie um programa que leia dois números inteiros e informe o utilizador se o primeiro é
divisível pelo segundo.

Exercício 4
Escreva um programa em Java que converta notas quantitativas de 0 a 20 em notas
qualitativas de mau a excelente, utilizando uma estrutura de if’s encadeados e que verifique o
limite superior das gamas de cada uma das notas qualitativas.
Considere que: 0-4:Mau; 5-9:Mediocre; 10-13:Suficiente; 14-17:Bom; 18-20:Muito Bom.

Exercício 5
Escreva um programa em Java que aceite três nomes e os imprima por ordem alfabética
crescente. Use o método comparedTo() da classe String.
O método comparedTo() tem o seguinte comportamento:
String s1=”CAPACIDADE”;
String s2=”CAPAZ”;
s1.comparedTo(s2) devolve um valor inteiro negativo.
s2.comparedTo(s2) devolve 0.
s2.comparedTo(s1) devolve um valor inteiro positivo.

Exercício 6
Utilizando a linguagem Java, crie um programa que receba do utilizador um número
correspondente a um mês, e apresente no monitor o mês correspondente. (Nota: 1=JAN,
2=FEV, 3=MAR,…). Deve usar a instrução de selecção switch.




14/32                                                                                  © DSI
Séries de Exercícios de Introdução à Programação – Laboratórios

Exercício 7
Crie um programa, pede ao utilizador para introduzir dois números e a operação aritmética
(*, /, -, +) que quer efectuar, pretende-se imprimir o resultado da operação matemática entre
ambos.

Exercício 8
Escreva um programa que apresente uma lista de 5 livros diferentes ao utilizador, pedindo-
lhe que seleccione um deles. Para o livro seleccionado, informe o utilizador do preço do
livro.

Exercício 9
Desenvolva um programa que mostra ao utilizador o seguinte menu:
1 – Nome
2 – Idade
3 – Nacionalidade
4 – Sair
E por fim, peça ao utilizador que introduza a opção que deseja visualizar e mostra qual foi
essa opção escolhida. Use a intrução switch.

Exercício 10
Altere o exercicio anterior de forma a pedir os dados do utilizador no inicio do programa. No
entanto, sempre que escolher uma das opções mostra os dados e de seguida pergunta se
deseja alterar os dados dessa mesma opção. Caso o utilizador deseje alterar deve alterar e
depois mostrar toda a informação do utilizador.




© DSI                                                                                   15/32
Séries de Exercícios de Introdução à Programação – Laboratórios




Série 5: Estruturas de Repetição (WHILE, DO-WHILE e FOR)

Objectivos da Série:
Com esta série de problemas pretende-se que o aluno:
   1. Pratique a utilização dos comandos while, do-while e for;
   2. Domine a utilização das estruturas while, do-while e for nas suas várias formas.

Exercício 1
Escreva um programa, que analisa um número aleatório, informando se este é primo ou não.
Alínea A
Use a estrutura de repetição while.
Alínea B
Use a estrutura de repetição do-while.

Exercício 2
Crie um programa, em Java, que receba um número inteiro e informe quantos dígitos foram
introduzidos.
Alínea A
Use a estrutura de repetição while.
Alínea B
Use a estrutura de repetição do-while.

Exercício 3
Escreva um programa que leia um conjunto de números inteiros e termine quando for
introduzido um número negativo, indicando quantos números foram introduzidos e qual é o
maior e o menor número introduzido. Use a estrutura do-while.

Exercício 4
Escreva um programa, que leia um número inteiro e calcule a soma dos seus dígitos. Use a
estrutura while.

Exercício 5
Faça um programa que lê uma sequência de números inteiros positivos e calcule a sua soma.
A quantidade de números é desconhecida à partida. A sequência de entrada só termina
quando for introduzido um número zero. Use a estrutura do-while.

Exercício 6
Crie um programa que calcule a soma de n primeiros números positivos, sendo o valor de n
fornecido pelo utilizador. Use a estrutura while.

 Exercício 7
Faça um programa, que calcule a média de 5 números aleatórios. Use a estrutura for.

Exercício 8
Escreva um programa que imprima a soma dos primeiros 20 números ímpares. Use a
estrutura for.




16/32                                                                                 © DSI
Séries de Exercícios de Introdução à Programação – Laboratórios

Exercício 9
Escreva um programa que peça ao utilizador que introduza um número inteior, e verifique se
esse mesmo número inteiro é divisível por 1 até ao número introduzido. Use a estrutura for.

Exercício 10
Desenvolva um programa que mostra todos os números primos até 1000, por ordem
decrescente. Use a estrutura for.

Exercício 11
Escreva um programa que gera aleatoriamente um número entre 1 e 100, e pede ao utilizador
que acerte nesse número. Quando o utilizador introduz o número, deve indicar se este é
maior ou menor ou igual ao gerado. O jogador tem 10 tentativas. Se o jogador acertar antes
das tentativas terminarem deve indicar que o jogador ganhou e o número de tentativas que
utilizou. Use a estrutura for.




© DSI                                                                                17/32
Séries de Exercícios de Introdução à Programação – Laboratórios



 Série 6: Métodos – Passagem de parâmetros

Objectivos da Série:

Com esta série de problemas pretende-se que o aluno:
   1. Pratique a utilização da passagem de parâmetros.
   2. Aprenda como interagir programas e subprogramas.

Exercício 1
Faça um programa para o cálculo da expressão f(x)=x 2 + 2x + 10, para os vários valores de
x. (Nota: considere x os primeiros 10 valores inteiros).


Exercício 2
Escreva um programa em que obtenha 2 números aleatórios, entre 1 e 20, e retorne o
máximo entre ambos.


Exercício 3
Faça um programa que calcula o cubo dos primeiros 10 números inteiros.


Exercício 4
Faça um programa que leia três números inteiros e calcule a sua média. Recorra a um
método para determinar a média pretendida.


Exercício 5
Escreva um método chamado sinal, que receba um número inteiro e retorne 1, -1 ou 0 caso o
número seja maior, menor ou igual a zero, respectivamente.


Exercício 6
Escreva um programa, em Java, que contenha um método potência, que receba uma base e
um expoente e calcule o valor da base elevado ao expoente. O expoente é sempre maior ou
igual a zero e, a base é sempre representado por números inteiros positivos.




18/32                                                                                 © DSI
Séries de Exercícios de Introdução à Programação – Laboratórios



 Série 7: Classes e Objectos

Objectivos da Série:

Com esta série de problemas pretende-se que o aluno:
   1. Aprenda a criar e instanciar Classes. Variáveis e Métodos de Instâncias.
   2. Aprenda como interagir entre Classes.


Exercício 1
Programa para registo e consulta de veículos automóveis para stand de usados.

    a) Defina uma classe Automóvel, que tem a seguinte informação
        • Marca
        • Ano
        • Nº Série motor
        • Cor
        • Preço

    b) Defina um método construtor para a classe Automóvel que inicializa os valores dos
       atributos através da passagem de argumentos definidos na alínea a)

    c) Defina os seguintes métodos
       a) getMarca – retorna o valor do atributo marca
       b) getAno – retorna o valor do atributo ano
       c) getSerie – retorna o valor do atributo Série
       d) getCor – retorna o valor do atributo Cor

    d) Elabore um programa onde:
        • Na classe principal cria 2 automóveis, através da criação de objectos da classe
           Automóvel.
       • Defina um método para preenchimento de dados sobre um automóveis.


    e) Defina na classe principal os seguintes métodos:
       • procuraMarca – lista o automóvel de uma determinada marca
       • listaAutomovel – lista as características do automóvel pelo seu nº de série.

    f) Considere que se pretende trocar os atributos entre ambos automóveis. Para isso, crie
        um método para efectuar a troca pretendida. Para verificar os resultados, imprima os
        atributos dos automóveis, antes e depois da troca.
    Nota : Recorra à passagem por referência no método para aceder e alterar os dados do
    objecto.




© DSI                                                                                   19/32
Séries de Exercícios de Introdução à Programação – Laboratórios



Exercício 2
Pretende-se criar uma conta bancária para dois clientes. Para isso, implemente um programa
que permita:
    1. Inserir os dados dos clientes.
    2. Procurar o cliente através do seu número de contribuinte e imprimindo, em seguida,
       os seus dados.

Assim, pretende-se que:
       a) Defina uma classe Cliente com a seguinte informação:
       • nome – nome do Cliente
       • n_Contribuinte – número do contribuinte
       • morada – Morada do cliente
       • telefone – Telefone/telemóvel para contacto


         b) Na classe criada defina os seguintes métodos:
         • setNome – modifica o valor do atributo nome
         • getNome – retorna o conteúdo do atributo nome
         • setContribuinte - modifica o valor do atributo n_contribuinte
         • getContribuinte - retorna o conteúdo do atributo n_contribuinte
         • setMorada - modifica o valor do atributo morada
         • getMorada - retorna o conteúdo do atributo morada
         • setTelefone - modifica o valor do atributo telefone
         • getTelefone - retorna o conteúdo do atributo telefone


         c) Defina na classe principal os seguintes métodos:
         • Método para preenchimento dos dados do Cliente:
                    public static Cliente preencheDados()

         •   Método para procurar o cliente com base no seu número de contribuinte:
                   public static Cliente FindCliente(Cliente first,Cliente second,int
             contrib){

         •   Método para imprimir os resultados:
                  public static void verificaCliente(Cliente testeCliente)

         •   Método main, onde invoque cada um dos métodos acima implementados.



Exercício 3
Implemente um programa para registo e consulta de informação sobre os funcionários de
uma empresa

        a) Defina uma classe Funcionário que tem a seguinte informação:
        • nome – nome do Funcionário
        • n_Bi – nº do BI
        • categoria – categoria da função
        • ordenado – ordenado base




20/32                                                                               © DSI
Séries de Exercícios de Introdução à Programação – Laboratórios

 b) Defina um método constructor para a classe Funcionário que inicialize os valores dos
atributos através da passagem de argumentos definidos na alínea a)

c) Defina os seguintes métodos
      • getNome – retorna o valor do atributo nome
      • getBI – retorna o valor do atributo BI
      • getCategoria – retorna o valor do atributo categoria
      • getOrdenado – retorna o valor do atributo ordenado
      • setOrdenado – modifica o valor do atributo ordenado
      • setCategoria – modifica o valor do atributo categoria

d) Elabore uma classe principal onde :
      • Crie 2 funcionários, através da criação de objectos da classe Funcionário
      • Defina um método para preenchimento dados de um funcionário que retorne o
          objecto preenchido.

e) Defina na classe principal os seguintes métodos
      • procura Funcionário – lista os atributos do funcionário pelo seu nº de BI
      • calculaOrdenado – para um determinado funcionário calcula o seu ordenado
          líquido, supondo que desconta 11% para a Segurança Social, 20% para o IRS e 15
          EUR para a quota associativa da empresa.
      • calculaTotalOrdenado – determina qual o montante total que a empresa despende
          com ordenados dos dois funcionários por mês.




© DSI                                                                                21/32
Séries de Exercícios de Introdução à Programação – Laboratórios



 Série 8: Métodos Recursivos

Objectivos da Série:

Com esta série de problemas pretende-se que o aluno:
     1. Pratique a utilização dos métodos recursivos.


Exercício 1
Utilizando a recursividade, obtenha os primeiros 12 números da sequência de Fibonacci.


Exercício 2
A função seno(x) pode ser calculada somando os n primeiros termos da séria infinita, dado n
que é um inteiro e x um número real, tal como se exprime na figura 1.

                      x3   x5   x7   x9                 xn
Sen(x) = x −             +    −    +    − ....
                      3!   5!   7!   9!                 n!
                                             Figura 1
Os valores de x são expressos em radianos.

a) Escreva uma função que calcule iterativamente o sen(x).

b) Escreva uma função que calcule recursivamente o sen(x).


Exercício 3
Sabe-se que a divisão pode ser obtida através de uma série de subtracções. Escreva uma
função recursiva, de dois argumentos inteiros, chamada divisão, que retorne o resultado da
divisão inteira do primeiro argumento pelo segundo. A função apenas pode utilizar as
operações de adição e subtracção.


Exercício 4
O máximo divisor comum entre dois números pode ser calculada por :

                 n1                                se n2=0
mdc(n1,n2) =
                 mdc(n2,mod(n1,n2))     se n2<>0
                                           Figura 2
Escreva um programa que leia 2 números inteiros e calcule o seu mdc.



Exercício 5
Faça um programa que, utilizando o método recursivo, implemente o triângulo de Pascal. O
Triângulo de Pascal é dado pela seguinte expressão:

             1              se k=0 ou k=n
C(n,k)   =
             C(n-1,k) + c(n-1,k-1)          se 0<k<n
                                             Figura 3




22/32                                                                                 © DSI
Séries de Exercícios de Introdução à Programação – Laboratórios


Resultado pretendido:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1
1 7 21 35 35 21 7 1
1 8 28 56 70 56 28 8 1



Exercício 6
Escreva o seguinte método recursivo que retorne a sequência de n termos referentes ao
número triangular.

      static long t(int n)

Os números triangulares são 0 1 3 6 10 15 21 28 ... e são dados pela expressão
seguinte:

                             t(n) = t(n-1) + n             para n > 1




© DSI                                                                                  23/32
Séries de Exercícios de Introdução à Programação – Laboratórios



 Série 9: Tabelas

Objectivos da Série:

Com esta série de problemas pretende-se que o aluno:
   1. Pratique aprofundadamente o uso das instruções de repetição
   2. Aprenda a definir, inicializar, e manipular tabelas de tipos primitivos.
   3. Domine o uso de tabelas unidimensionais e multi-dimensionais.
   4. Saiba definir tabelas de objectos e efectuar operações sobre as mesmas

Exercício nº 1

Implemente o método soma que retorna a soma dos elementos se uma tabela.
A assinatura do método é a que se segue:
static double soma(double[] x)


Exercício nº 2

Implemente o método para tabelas que troca entre si os elementos da tabela t da posição i e j,
tendo em conta a seguinte assinatura:

static void troca(int[] t, int i, int j)


Exercício nº 3

Implemente o método mover, com a assinatura abaixo descrita, que move o elemento da
tabela t da posição i para a posição j
Exemplo:
Se t representa a lista {22,33,44,55,66,77}, então mover(v,4,1) resulta
em {22,66,33,44,55,77}

static void mover(int[] t, int i, int j)


Exercício nº 4

Implemente uma classe que contenha os dois métodos acima definidos e que o método
“main” permita testar o método troca e o método mover.


Exercício nº 5

Considere a seguinte declaração:

char[][] m={{‘c’,’f’,’a’}, {‘q’,’q’,’w’},{‘i’,’p’,’j’}};

Alínea a
Qual a dimensão da tabela m ?




24/32                                                                                  © DSI
Séries de Exercícios de Introdução à Programação – Laboratórios

Alínea b
Quantos elementos tem a tabela m?
Alínea c
Qual o tipo dos elementos da tabela ?


Exercício nº 6


Alinea a
Implemente o método trianguloDePascal que calcula e mostra no ecran as n primeiras
linhas do triângulo de Pascal.

As linhas do triângulo de pascal calculam-se colocando no primeiro e último elemento de
cada linha 1 e nos restantes elementos a soma dos elementos da linha anterior na posição
imediatamente antes e depois do elemento que estamos a calcular.

Exemplo de um Triângulo de Pascal de dimensão 6:

                             [0] [1] [2] [3] [4] [5]

                      [0] 1

                      [1] 1         1

                      [2] 1         2      1

                      [3] 1         3      3      1

                      [4] 1         4      6      4      1

                      [5] 1         5      10     10     5     1

A assinatura do método a implementar é a que se segue:
static int[][] trianguloDePascal(int n)


Alinea b


Implemente uma classe que contenha o método trianguloDePascal e que permita
testá-lo (pedindo o valor n ao utilizador e escrevendo no ecran o triângulo de pascal
correspondente)


Exercício nº 7

Implemente o método produtoExterno que calcula o produto externo entre dois
vectores. A matriz resultante calcula-se da seguinte forma p[i][j]=x[i]*y[j], onde x
e y são os vectores de entrada

static double[][] produtoExterno(double[] x, double[] y)


© DSI                                                                                25/32
Séries de Exercícios de Introdução à Programação – Laboratórios




Exercício nº 8

Temos um sistema para validar as matrizes do totoloto. O sistema digitaliza os impressos e
converte cada aposta numa matriz de booleanos de 7 x 7. Cada elemento da matriz
corresponde um número de 1-49 e se este tiver o valor lógico verdade significa que o número
correspondente faz parte da aposta:

Exemplo:
                                   Esta aposta do totoloto
                            1     2     3    4     5     6     7
                            8     9 10 11 12 13               14
                            15    16 17 18 19 20              21
                            22    23 24 25 26 27              28
                            29    30 31 32 33 34              35
                            36    37 38 39 40 41              42
                            43    44 45 46 47 48              49

                                  Corresponde a esta matriz
                              T    F F F F F                  F
                              F    F T F F F                  F
                              F    F F T F F                  F
                              F    F F F F F                  F
                              F    F F F T T                  F
                              F    F F F F F                  F
                              T    F F F F F                  F


Alinea a
Escreva um método que, tendo a assinatura abaixo descrita, receba como entrada a matriz de
aposta e devolva uma tabela com os números apostados:

static int[] apostaTotoloto(boolean[][] m)


Alinea b
Escreva um método que receba como entrada a matriz de aposta e devolva um valor do tipo
boolean que diz se esta é valida.
Nota: poderá haver apostas múltiplas, com 7,8,9,10,11, e 12 números

static boolean apostaValidaTotoloto(boolean[][] m)


Alinea c
Escreva um programa que peça ao utilizador a sua aposta do totoloto e verifique se esta é
válida e caso não seja, dê uma mensagem de erro.


Exercício nº 9
Treinando álgebra de matrizes....
Implemente um método que multiplique duas matrizes de inteiros.

static int[ ][ ] produtoMatrizes(int[ ][ ] m1, int[ ][ ]m2)



26/32                                                                                 © DSI
Séries de Exercícios de Introdução à Programação – Laboratórios




Exercício nº 10
Treinando álgebra de matrizes....
Implemente um método que verifique se a matriz dada é a matriz identidade.

static boolean identidadeMatriz(int[ ][ ] m1)


Exercício nº 11
Treinando álgebra de matrizes....
Implemente um método que dado uma matriz calcula a matriz transposta.

static int[ ] [ ] transpostaMatriz(int[ ][ ] m1)


Exercício nº 12
Programa para introdução e consulta de veículos automóveis para um stand .

   a) Defina uma classe Automóvel, com os atributos
       • Marca
       • Nº Série motor
       • Cor
       • Preço

   b)Defina um método construtor para a classe Automóvel que inicializa os valores dos
   atributos através da passagem de argumentos definidos na alínea a)

   c)Defina os seguintes métodos
      • getMarca – retorna o valor do atributo marca
      • getPreço – retorna o valor do atributo preço
      • getSerie – retorna o valor do atributo Série
      • getCor – retorna o valor do atributo Cor

   d)Crie uma Classe Menus onde deve ser possível:

        •   Introduzir Automóveis na Base de dados
        •   Listar dados dos automóveis respectivos através da inserção do número de série
        •   Listar dados dos automóveis respectivos através da inserção da marca

   e)Defina na classe de teste, uma Base de dados com informação de automóveis, através
   da criação de uma tabela de objectos da classe Automóvel




© DSI                                                                                27/32
Séries de Exercícios de Introdução à Programação – Laboratórios



 Série Nº10– Procura e Ordenação de elementos em tabelas

Objectivos da Série:

Com esta série de problemas pretende-se que o aluno:
   1. Pratique o uso do comando o uso de tabelas e da passagem de tabelas como
       parametros
   2. Aprenda a implementar algoritmos de procura
   3. Domine algoritmos de procura e uso de tabelas
   4. Aprenda a implementar algoritmos de ordenação
   5. Domine a ordenação de tabelas segundo vários métodos


Exercício nº 1
Implemente o método minimo retorna o menor valor dos elementos da tabela x.
static double minimo(double[] x)

Exercício nº 2
Implementa o método iMaximo que retorna o indice do elemento de maior valor da tabela
x:
static int iMaximo(double[] x)


Exercício nº 3
Implementa o método gama que retorna a diferença entre o valor mínimo e o valor máximo
dos elementos da tabela x.
static double gama(double[] x)


Exercício nº 4
Implementa o método iguais que retorna o valor lógico verdade se as duas tabelas forem
iguais, ou seja se os valores dos elementos dos dois vectores corresponderem entre si:

static boolean iguais(double[] x , double[] y)


Exercício nº 5
Implemente a classe TabelaTeste, que contenha os métodos definidos em 1, 2 e 3.
Esta classe deve ainda conter um método main, que:
    1. Implemente a leitura das duas tabelas.
    2. Imprima no ecran os seguintes resultados:
       • O mínimo dos valores da 1ª e 2ª tabela
       • A gama de valores da 1ª e 2ªa tabela
       • Se as duas tabelas são iguais.

Exercício nº 6
Temos uma tabela com as temperaturas médias ao longo dos dias de mês. Queremos saber
para um determinado mês:
    1. Qual foi a temperatura mais baixa



28/32                                                                               © DSI
Séries de Exercícios de Introdução à Programação – Laboratórios

    2. Em que dia ocorreu a temperatura mais elevada
    3. Qual foi a diferença entre a temperatura mais baixa e a temperatura mais alta.

    Implemente um programa que cumpra os requisitos acima descritos usando os métodos
    definidos no Exercícios 1, 2, 3.

Exercício nº 7


Alinea a

Implemente o método procuraInteiro que procura na tabela v, que tem como critério
de paragem o valor de s, se esta contém o elemento x. Caso a procura seja realizada com
sucesso retorna o índice do elemento, senão retorna –1.
public static int procuraInteiro(int[] v, int x, int s)

Alinea b
Implemente o método leInteiro que retorna uma tabela com os inteiros introduzidos,
através do teclado.
O último elemento tem o valor s. Sendo assim, quando o utilizador digitar o valor de s é
porque a introdução de valores terminou.

public static int[] leInteiro(int s)


Alinea c
Modifique o método da alínea a) de modo a poder ser feita procura em parte da lista, ou seja
procura na tabela v entre os indices inicio e fim, do elemento x. Tendo como critério de
paragem o valor s. Caso a operação seja realizada com sucesso retorna o índice do elemento,
senão retorna o valor –1.
public static int procuraInteiro(int[] v, int x, int s, int inicio, int fim)




Alinea d
Implemente um programa que :
   1. Leia a nota dos trabalhos de IP por grupo.
   2. Pergunte ao utilizador qual a nota que pretende saber:
   3. Imprima o nº dos grupos que tiveram a nota lida no ponto 2
Nota: Utilize os métodos definidos anteriormente


Exercício 8.

Um sistema de controlo de presenças ligado ao sistema de marcação de ponto, mantém uma
lista de todos os trabalhadores que num determinado momento se encontram dentro da
empresa. É necessário implementar um método que dado o nome de uma pessoa, ele nos
valide se esta pessoa se encontra dentro da empresa ou não. Utilize a procura binária na
implementação desta função.
Nota: a lista é terminada com a palavra “ * ‘”

public static boolean procuraPessoa(String[] v)



© DSI                                                                                   29/32
Séries de Exercícios de Introdução à Programação – Laboratórios




Exercício 9

Existe um sistema informático na escola para inscrição dos alunos para os testes de I.P. O
programa pede aos alunos que se inscrevem o número e o nome . Após as inscrições terem
terminado o programa disponibiliza várias funcionalidades:
    1. Conta o nº de alunos inscritos
    2. Imprime no ecran o nº de aluno e o seu nome por ordem crescente do nº de aluno.

Alínea a
Implemente um método que permita contar o nº de alunos inscritos

Alínea b
Implemente um método que permita ordenar ,usando o algoritmo selecion sort, os alunos por
número na ordem crescente.
Nota. Deverá ser mantida a correspondência entre nº de aluno e nome.

Alínea c
Implemente o programa descrito acima usando os métodos que implementou na alínea a) e
na alínea b).


Exercício 10

Implemente um programa que:

    •      Ordene usando o algoritmo BubbleSort a matriz:
                       a       f   d
                       g   b           j
                       x   o           l

    •      Apresente a matriz ordenada em ordem crescente da esquerda para a direita e de
           baixo para cima no ecran, devendo ser o resultado final obtido:

                   a       b       d
                   f       g       j
                   l       o       x




30/32                                                                                © DSI
Séries de Exercícios de Introdução à Programação – Laboratórios




Exercício 11

Implemente um programa que:
   1. receba o registo de emails (nome e morada)
   2. guarde estes registos numa tabela
   3. Ordene a tabela por nome, segundo o método quicksort.
   4. Apresente em seguida o resultado no ecran.



Exercício 12

Os procedimentos de ordenação apresentados nesta série correspondem a uma ordenação
destrutiva, pois a tabela original é destruída e substituída pela tabela ordenada. Um processo
alternativo consiste em criar uma tabela com índices, que representam as posições ordenadas
dos elementos por selecção, criando uma tabela com índices. Implemente um método para
efectuar a ordenação por selecção, criando uma tabela com índices.


Exercício 13

A aplicação CarrosUsados é uma aplicação para busca de informação sobre carros usados.
Contém informação sobre o modelo do carro, marca , ano e preço. Permite realizar as
seguintes opções:

           1.   Listagem ordenada por modelo
           2.   Listagem ordenada por marca
           3.   Listagem ordenada por ano
           4.   Listagem ordenada por preço
           5.   Listagem ordenada por modelo, marca, preço
           6.   Listagem ordenada por modelo, marca, ano


public class CarrosUsados
{
    public String marca, modelo;
    public int ano,preco;
    …
}
Alínea a
Defina o método que implementa a ordenação da tabela de carros usados por modelo.

Alínea b
Defina o método que implementa a ordenação da tabela de carros usados por preço.

Alínea c
Defina o método que implementa a ordenação da tabela primeiro por modelo, segundo por
marca, terceiro por preço.




© DSI                                                                                   31/32
Séries de Exercícios de Introdução à Programação – Laboratórios




Exercício nº 14

Uma loja pretende dispor os seus artigos de vestuário segundo cores. Para isso precisa de
fazer uma pequena alteração à aplicação de suporte à gestão da loja, de modo a acrescentar a
funcionalidade de listagem de artigos por ordem de cor .

Sendo a ordem de cores desejada
(amarelo,laranja,castanho,beje,verde,azul,vermelho,cinzento,preto).

Implemente o método que permite reordenar a tabela de objectos ArtigoVestuario
segundo a ordem de cores desejada


public class ArtigoVestuario
{
    public int cod;
    public String artigo, cor;
  ...
}


Exercício nº 15

Pretende-se ordenar objectos da classe Data. Esta classe contém os campos dia,mês e ano.


Alínea a
Ecreva a declaração para a classe Data.


Alínea b
Escreva a declaração para uma tabela de tamanho 100 , cujos elementos são da classe Data.


Alínea c
Implemente o método ordenaData que ordena de forma crescente ou decrescente uma
tabela de objectos da classe Data




32/32                                                                                 © DSI

Mais conteúdo relacionado

Mais procurados

10. Encapsulação; Cópia de instâncias; Igualdade de instâncias – Fundamentos ...
10. Encapsulação; Cópia de instâncias; Igualdade de instâncias – Fundamentos ...10. Encapsulação; Cópia de instâncias; Igualdade de instâncias – Fundamentos ...
10. Encapsulação; Cópia de instâncias; Igualdade de instâncias – Fundamentos ...Manuel Menezes de Sequeira
 
Programação Concorrente - Aula 04
Programação Concorrente - Aula 04Programação Concorrente - Aula 04
Programação Concorrente - Aula 04thomasdacosta
 
4. Introdução à linguagem de programação Java – Fundamentos de Programação
4. Introdução à linguagem de programação Java – Fundamentos de Programação4. Introdução à linguagem de programação Java – Fundamentos de Programação
4. Introdução à linguagem de programação Java – Fundamentos de ProgramaçãoManuel Menezes de Sequeira
 
14. Interfaces; Listas e cadeias ligadas; Iteradores – Fundamentos de Program...
14. Interfaces; Listas e cadeias ligadas; Iteradores – Fundamentos de Program...14. Interfaces; Listas e cadeias ligadas; Iteradores – Fundamentos de Program...
14. Interfaces; Listas e cadeias ligadas; Iteradores – Fundamentos de Program...Manuel Menezes de Sequeira
 
Especificação e Verificação de Programas
Especificação e Verificação de ProgramasEspecificação e Verificação de Programas
Especificação e Verificação de ProgramasAdolfo Neto
 
Curso de Java (Parte 3)
 Curso de Java (Parte 3) Curso de Java (Parte 3)
Curso de Java (Parte 3)Mario Sergio
 
7. Arrays multidimensionais; Estratégias de resolução de problemas – Fundamen...
7. Arrays multidimensionais; Estratégias de resolução de problemas – Fundamen...7. Arrays multidimensionais; Estratégias de resolução de problemas – Fundamen...
7. Arrays multidimensionais; Estratégias de resolução de problemas – Fundamen...Manuel Menezes de Sequeira
 
Curso de Java (Parte 4)
Curso de Java (Parte 4)Curso de Java (Parte 4)
Curso de Java (Parte 4)Mario Sergio
 
Aula5 introducao c
Aula5 introducao cAula5 introducao c
Aula5 introducao cprofwtelles
 
[Pereira, IC'2013] Uma nova abordagem para detecção e extracao de paralelismo...
[Pereira, IC'2013] Uma nova abordagem para detecção e extracao de paralelismo...[Pereira, IC'2013] Uma nova abordagem para detecção e extracao de paralelismo...
[Pereira, IC'2013] Uma nova abordagem para detecção e extracao de paralelismo...Marcio Machado Pereira
 
Programação Concorrente - Aula 05
Programação Concorrente - Aula 05Programação Concorrente - Aula 05
Programação Concorrente - Aula 05thomasdacosta
 
Atividades de Teste e Cobertura de Código em Java
Atividades de Teste e Cobertura de Código em JavaAtividades de Teste e Cobertura de Código em Java
Atividades de Teste e Cobertura de Código em Javaaceiro
 
Desenvolvimento de Software
Desenvolvimento de SoftwareDesenvolvimento de Software
Desenvolvimento de SoftwareVagner Santana
 
Java aprendendo linguagem.ppt
Java aprendendo linguagem.pptJava aprendendo linguagem.ppt
Java aprendendo linguagem.pptEmerson Cardoso
 
12. Paradigmas da programação; Programação orientada por objectos; Pacotes – ...
12. Paradigmas da programação; Programação orientada por objectos; Pacotes – ...12. Paradigmas da programação; Programação orientada por objectos; Pacotes – ...
12. Paradigmas da programação; Programação orientada por objectos; Pacotes – ...Manuel Menezes de Sequeira
 

Mais procurados (20)

10. Encapsulação; Cópia de instâncias; Igualdade de instâncias – Fundamentos ...
10. Encapsulação; Cópia de instâncias; Igualdade de instâncias – Fundamentos ...10. Encapsulação; Cópia de instâncias; Igualdade de instâncias – Fundamentos ...
10. Encapsulação; Cópia de instâncias; Igualdade de instâncias – Fundamentos ...
 
Programação Concorrente - Aula 04
Programação Concorrente - Aula 04Programação Concorrente - Aula 04
Programação Concorrente - Aula 04
 
4. Introdução à linguagem de programação Java – Fundamentos de Programação
4. Introdução à linguagem de programação Java – Fundamentos de Programação4. Introdução à linguagem de programação Java – Fundamentos de Programação
4. Introdução à linguagem de programação Java – Fundamentos de Programação
 
14. Interfaces; Listas e cadeias ligadas; Iteradores – Fundamentos de Program...
14. Interfaces; Listas e cadeias ligadas; Iteradores – Fundamentos de Program...14. Interfaces; Listas e cadeias ligadas; Iteradores – Fundamentos de Program...
14. Interfaces; Listas e cadeias ligadas; Iteradores – Fundamentos de Program...
 
Estruturas
EstruturasEstruturas
Estruturas
 
Especificação e Verificação de Programas
Especificação e Verificação de ProgramasEspecificação e Verificação de Programas
Especificação e Verificação de Programas
 
Curso de Java (Parte 3)
 Curso de Java (Parte 3) Curso de Java (Parte 3)
Curso de Java (Parte 3)
 
7. Arrays multidimensionais; Estratégias de resolução de problemas – Fundamen...
7. Arrays multidimensionais; Estratégias de resolução de problemas – Fundamen...7. Arrays multidimensionais; Estratégias de resolução de problemas – Fundamen...
7. Arrays multidimensionais; Estratégias de resolução de problemas – Fundamen...
 
Curso de Java (Parte 4)
Curso de Java (Parte 4)Curso de Java (Parte 4)
Curso de Java (Parte 4)
 
Aula5 introducao c
Aula5 introducao cAula5 introducao c
Aula5 introducao c
 
Aula5 introducao c
Aula5 introducao cAula5 introducao c
Aula5 introducao c
 
[Pereira, IC'2013] Uma nova abordagem para detecção e extracao de paralelismo...
[Pereira, IC'2013] Uma nova abordagem para detecção e extracao de paralelismo...[Pereira, IC'2013] Uma nova abordagem para detecção e extracao de paralelismo...
[Pereira, IC'2013] Uma nova abordagem para detecção e extracao de paralelismo...
 
Programação Concorrente - Aula 05
Programação Concorrente - Aula 05Programação Concorrente - Aula 05
Programação Concorrente - Aula 05
 
Atividades de Teste e Cobertura de Código em Java
Atividades de Teste e Cobertura de Código em JavaAtividades de Teste e Cobertura de Código em Java
Atividades de Teste e Cobertura de Código em Java
 
Linguagem C - Controle de Programa
Linguagem C - Controle de ProgramaLinguagem C - Controle de Programa
Linguagem C - Controle de Programa
 
Desenvolvimento de Software
Desenvolvimento de SoftwareDesenvolvimento de Software
Desenvolvimento de Software
 
Java aprendendo linguagem.ppt
Java aprendendo linguagem.pptJava aprendendo linguagem.ppt
Java aprendendo linguagem.ppt
 
12. Paradigmas da programação; Programação orientada por objectos; Pacotes – ...
12. Paradigmas da programação; Programação orientada por objectos; Pacotes – ...12. Paradigmas da programação; Programação orientada por objectos; Pacotes – ...
12. Paradigmas da programação; Programação orientada por objectos; Pacotes – ...
 
Programação em C
Programação em CProgramação em C
Programação em C
 
Java 06
Java 06Java 06
Java 06
 

Destaque

Prova 2011
Prova 2011Prova 2011
Prova 2011edmildo
 
Meta 3.1 slideshare ma.cruz
Meta 3.1 slideshare ma.cruzMeta 3.1 slideshare ma.cruz
Meta 3.1 slideshare ma.cruzMaCruzXX1
 
130512 agenda nacional
130512 agenda nacional130512 agenda nacional
130512 agenda nacionalLhm Hernández
 
Informatic
InformaticInformatic
Informaticdellnira
 
Segundo Parcial - Norman Gwynn
Segundo Parcial - Norman GwynnSegundo Parcial - Norman Gwynn
Segundo Parcial - Norman Gwynnnorgwynn
 
Presentacion de ensayo
Presentacion de ensayoPresentacion de ensayo
Presentacion de ensayoSanti Cardoso
 
XIV CBE - MESA 1 - Antonio Carlos Tovar - 23 out 2012
XIV CBE - MESA 1 - Antonio Carlos Tovar - 23 out 2012XIV CBE - MESA 1 - Antonio Carlos Tovar - 23 out 2012
XIV CBE - MESA 1 - Antonio Carlos Tovar - 23 out 2012CBE2012
 
Formação multimédia
Formação multimédiaFormação multimédia
Formação multimédiaaxel384256
 
be IN Trás-os-Montes - Sessão de Envolvimento - Franscisco Dinis
be IN Trás-os-Montes - Sessão de Envolvimento - Franscisco Dinisbe IN Trás-os-Montes - Sessão de Envolvimento - Franscisco Dinis
be IN Trás-os-Montes - Sessão de Envolvimento - Franscisco DinisPlataforma Empreendedor
 
Geriatric Dentistry/Odontogeriatria
Geriatric Dentistry/OdontogeriatriaGeriatric Dentistry/Odontogeriatria
Geriatric Dentistry/Odontogeriatrialulufernando
 
Como construir-o-seu-proprio-negocio
Como construir-o-seu-proprio-negocioComo construir-o-seu-proprio-negocio
Como construir-o-seu-proprio-negocioPaulo Pereira
 
Guia asperger de sobrevivencia
Guia asperger de sobrevivenciaGuia asperger de sobrevivencia
Guia asperger de sobrevivenciaMarcelo Camilo
 
Condumelsdoms
CondumelsdomsCondumelsdoms
CondumelsdomsMela Loza
 

Destaque (20)

Prova 2011
Prova 2011Prova 2011
Prova 2011
 
La creatividad
La creatividadLa creatividad
La creatividad
 
Meta 3.1 slideshare ma.cruz
Meta 3.1 slideshare ma.cruzMeta 3.1 slideshare ma.cruz
Meta 3.1 slideshare ma.cruz
 
130512 agenda nacional
130512 agenda nacional130512 agenda nacional
130512 agenda nacional
 
Your Anime
Your AnimeYour Anime
Your Anime
 
Informatic
InformaticInformatic
Informatic
 
Segundo Parcial - Norman Gwynn
Segundo Parcial - Norman GwynnSegundo Parcial - Norman Gwynn
Segundo Parcial - Norman Gwynn
 
Practica 1
Practica 1Practica 1
Practica 1
 
Cacera Impress
Cacera ImpressCacera Impress
Cacera Impress
 
Apresentaçãodouglas
ApresentaçãodouglasApresentaçãodouglas
Apresentaçãodouglas
 
Presentacion de ensayo
Presentacion de ensayoPresentacion de ensayo
Presentacion de ensayo
 
XIV CBE - MESA 1 - Antonio Carlos Tovar - 23 out 2012
XIV CBE - MESA 1 - Antonio Carlos Tovar - 23 out 2012XIV CBE - MESA 1 - Antonio Carlos Tovar - 23 out 2012
XIV CBE - MESA 1 - Antonio Carlos Tovar - 23 out 2012
 
Formação multimédia
Formação multimédiaFormação multimédia
Formação multimédia
 
Yossein
YosseinYossein
Yossein
 
be IN Trás-os-Montes - Sessão de Envolvimento - Franscisco Dinis
be IN Trás-os-Montes - Sessão de Envolvimento - Franscisco Dinisbe IN Trás-os-Montes - Sessão de Envolvimento - Franscisco Dinis
be IN Trás-os-Montes - Sessão de Envolvimento - Franscisco Dinis
 
Geriatric Dentistry/Odontogeriatria
Geriatric Dentistry/OdontogeriatriaGeriatric Dentistry/Odontogeriatria
Geriatric Dentistry/Odontogeriatria
 
Como construir-o-seu-proprio-negocio
Como construir-o-seu-proprio-negocioComo construir-o-seu-proprio-negocio
Como construir-o-seu-proprio-negocio
 
Guia asperger de sobrevivencia
Guia asperger de sobrevivenciaGuia asperger de sobrevivencia
Guia asperger de sobrevivencia
 
Empresasolemne
EmpresasolemneEmpresasolemne
Empresasolemne
 
Condumelsdoms
CondumelsdomsCondumelsdoms
Condumelsdoms
 

Semelhante a Introdução à Programação Laboratórios

Conceito de funçao e modularizaçao
Conceito de funçao e modularizaçaoConceito de funçao e modularizaçao
Conceito de funçao e modularizaçaossuserc6132d
 
Conceitos e técnicas de programação aula 2
Conceitos e técnicas de programação aula 2Conceitos e técnicas de programação aula 2
Conceitos e técnicas de programação aula 2Robson Ferreira
 
Java introdução ao java
Java   introdução ao javaJava   introdução ao java
Java introdução ao javaArmando Daniel
 
Workshop de Certificação Java - Onixlab
Workshop de Certificação Java - OnixlabWorkshop de Certificação Java - Onixlab
Workshop de Certificação Java - OnixlabThiago Teixeira
 
Lista IV de Programação Orientada a Objetos
Lista IV de Programação Orientada a ObjetosLista IV de Programação Orientada a Objetos
Lista IV de Programação Orientada a Objetosunifesptk
 
mod3-programação-estruturada
mod3-programação-estruturadamod3-programação-estruturada
mod3-programação-estruturadadiogoa21
 
Introdução a linguagem c karen lowhany
Introdução a linguagem c   karen lowhanyIntrodução a linguagem c   karen lowhany
Introdução a linguagem c karen lowhanyKaren Costa
 
Linguagem de Programação Java
Linguagem de Programação JavaLinguagem de Programação Java
Linguagem de Programação Javathomasdacosta
 
Minicurso - Técnicas de Teste e Automatização do Teste de Unidade XII SemanaT...
Minicurso - Técnicas de Teste e Automatização do Teste de Unidade XII SemanaT...Minicurso - Técnicas de Teste e Automatização do Teste de Unidade XII SemanaT...
Minicurso - Técnicas de Teste e Automatização do Teste de Unidade XII SemanaT...Claudinei Brito Junior
 
Introdução a Linguagem C
Introdução a Linguagem CIntrodução a Linguagem C
Introdução a Linguagem Capolllorj
 
Aula02_Vars_Ident_Ent_Saida_Algoritmos.pptx
Aula02_Vars_Ident_Ent_Saida_Algoritmos.pptxAula02_Vars_Ident_Ent_Saida_Algoritmos.pptx
Aula02_Vars_Ident_Ent_Saida_Algoritmos.pptxaronoliveira3
 
Estrutura de linguagem C++
Estrutura de linguagem C++Estrutura de linguagem C++
Estrutura de linguagem C++Verônica Veiga
 
Desenvolvimento Dirigido por Testes com Junit
Desenvolvimento Dirigido por Testes com JunitDesenvolvimento Dirigido por Testes com Junit
Desenvolvimento Dirigido por Testes com JunitAdolfo Neto
 
Exercícios de programação orientado a objeto
Exercícios de programação orientado a objetoExercícios de programação orientado a objeto
Exercícios de programação orientado a objetoGleyciana Garrido
 

Semelhante a Introdução à Programação Laboratórios (20)

Conceito de funçao e modularizaçao
Conceito de funçao e modularizaçaoConceito de funçao e modularizaçao
Conceito de funçao e modularizaçao
 
Conceitos e técnicas de programação aula 2
Conceitos e técnicas de programação aula 2Conceitos e técnicas de programação aula 2
Conceitos e técnicas de programação aula 2
 
Java5
Java5Java5
Java5
 
Java3
Java3Java3
Java3
 
Java introdução ao java
Java   introdução ao javaJava   introdução ao java
Java introdução ao java
 
Workshop de Certificação Java - Onixlab
Workshop de Certificação Java - OnixlabWorkshop de Certificação Java - Onixlab
Workshop de Certificação Java - Onixlab
 
Lista IV de Programação Orientada a Objetos
Lista IV de Programação Orientada a ObjetosLista IV de Programação Orientada a Objetos
Lista IV de Programação Orientada a Objetos
 
mod3-programação-estruturada
mod3-programação-estruturadamod3-programação-estruturada
mod3-programação-estruturada
 
Introdução a linguagem c karen lowhany
Introdução a linguagem c   karen lowhanyIntrodução a linguagem c   karen lowhany
Introdução a linguagem c karen lowhany
 
Linguagem de Programação Java
Linguagem de Programação JavaLinguagem de Programação Java
Linguagem de Programação Java
 
Aula09 traducaosin110
Aula09 traducaosin110Aula09 traducaosin110
Aula09 traducaosin110
 
Testes de Sofware
Testes de SofwareTestes de Sofware
Testes de Sofware
 
Minicurso - Técnicas de Teste e Automatização do Teste de Unidade XII SemanaT...
Minicurso - Técnicas de Teste e Automatização do Teste de Unidade XII SemanaT...Minicurso - Técnicas de Teste e Automatização do Teste de Unidade XII SemanaT...
Minicurso - Técnicas de Teste e Automatização do Teste de Unidade XII SemanaT...
 
Introdução a Linguagem C
Introdução a Linguagem CIntrodução a Linguagem C
Introdução a Linguagem C
 
Aula02_Vars_Ident_Ent_Saida_Algoritmos.pptx
Aula02_Vars_Ident_Ent_Saida_Algoritmos.pptxAula02_Vars_Ident_Ent_Saida_Algoritmos.pptx
Aula02_Vars_Ident_Ent_Saida_Algoritmos.pptx
 
Programação Defensiva
Programação DefensivaProgramação Defensiva
Programação Defensiva
 
Estrutura de linguagem C++
Estrutura de linguagem C++Estrutura de linguagem C++
Estrutura de linguagem C++
 
Algop - aula 05
Algop - aula 05Algop - aula 05
Algop - aula 05
 
Desenvolvimento Dirigido por Testes com Junit
Desenvolvimento Dirigido por Testes com JunitDesenvolvimento Dirigido por Testes com Junit
Desenvolvimento Dirigido por Testes com Junit
 
Exercícios de programação orientado a objeto
Exercícios de programação orientado a objetoExercícios de programação orientado a objeto
Exercícios de programação orientado a objeto
 

Mais de Portal_do_Estudante_Java (12)

Tutorial java
Tutorial javaTutorial java
Tutorial java
 
Ficha teorica aula_input_reader
Ficha teorica aula_input_readerFicha teorica aula_input_reader
Ficha teorica aula_input_reader
 
String tokenizer
String tokenizerString tokenizer
String tokenizer
 
Ficheiros texto
Ficheiros textoFicheiros texto
Ficheiros texto
 
String
StringString
String
 
Programacao em java
Programacao em javaProgramacao em java
Programacao em java
 
Javacodingstandardssummary
JavacodingstandardssummaryJavacodingstandardssummary
Javacodingstandardssummary
 
Javacodingstandards
JavacodingstandardsJavacodingstandards
Javacodingstandards
 
Java apostilha
Java apostilhaJava apostilha
Java apostilha
 
A linguagem java
A linguagem javaA linguagem java
A linguagem java
 
52 java
52 java52 java
52 java
 
Arrays em java
Arrays em javaArrays em java
Arrays em java
 

Introdução à Programação Laboratórios

  • 1. Instituto Politécnico de Setúbal Escola Superior de Tecnologia Departamento de Sistemas e Informática Aulas de Laboratório Disciplina de Introdução à Programação Ano Lectivo 2004/2005
  • 2. Séries de Exercícios de Introdução à Programação – Laboratórios Série 1: Introdução ao Ambiente de Desenvolvimento 1. Criação de Projectos Ao longo desta série serão seguidas as instruções do guia “Instalação e utilização do Gel” que indicam o modo de criar um projecto, criar classes, associar ficheiros, compilar, executar,etc. É aconselhavel, para cada um dos exercícios que se seguem, criar uma directoria individual e nela criar o projecto. Assim termos por exemplo: C:My DocumentsProjectosExemplo1ficheiros do projecto Este guia destina-se à prática de utilização do ambiente de desenvolvimento de modo a existir um primeiro contacto com: 1. O sistema de janelas do GEL 2. O sistema de Directorias e Ficheiros 3. Os projectos do GEL 4. O processo de escrita, compilação e execussão de programas 5. A linguagem JAVA Não é o objectivo deste guia a compreensão total do código Java nos exemplos seguintes 2/32 © DSI
  • 3. Séries de Exercícios de Introdução à Programação – Laboratórios 2. Exemplos Exemplo 1 Enunciado: Escreva um programa em Java que imprima uma frase. Código: public class Exemplo1 { public static void main(String[] args) { System.out.println("Este é um programa simples"); } } Exemplo 2 Enunciado: Escreva um programa em Java que peça ao utilizador um número inteiro e o imprima. Código: public class Exemplo2 { public static void main(String[] args) { System.out.println("Introduza um número inteiro"); int num=Le.umInt(); System.out.println("O número lido é "+num); } } © DSI 3/32
  • 4. Séries de Exercícios de Introdução à Programação – Laboratórios Exemplo 3 Enunciado: Escreva um programa em Java que peça ao utilizador dois números inteiros, os imprima e imprima a sua soma. Código: public class Exemplo3 { public static void main(String[] args) { System.out.println("Introduza 2 números inteiros"); int num1=Le.umInt(); System.out.println("O nº é "+num1); int num2=Le.umInt(); System.out.println("O nº é "+num2); int num3=num1+num2; System.out.println("A soma de "+num1+"+"+num2+" é "+num3); } } Exemplo 4 Enunciado: Escreva um programa em Java que calcule a area e o perimetro de uma circunferência a partir do seu raio.. Código: public class Exemplo4 { public static void main(String[] args) { double area, perimetro; double PI=3.1415926; System.out.println("Este programa calcula o perimetro e a area de uma circunferência a partir do seu raio"); System.out.println("Qual o raio da circunferência?"); double raio = Le.umDouble(); area = PI * raio * raio; perimetro = 2 * PI * raio; System.out.println("Raio = "+raio); System.out.println("Area = "+area); System.out.println("Perimetro = "+perimetro); } } 4/32 © DSI
  • 5. Séries de Exercícios de Introdução à Programação – Laboratórios Exemplo 5 Enunciado: Escreva um programa em Java que peça ao utilizador um número e diga se esse número é negativo ou positivo. Código: public class Exemplo5 { public static void main(String[] args) { float a; System.out.println("Introduza um número"); a = Le.umFloat(); if (a<0) { System.out.println("O número "+a+" é negativo"); } else { System.out.println("O número "+a+" é positivo"); } } } Exemplo 6 Enunciado: Altere o programa anterior de modo a que sejam pedidos números até ser introduzido o valor zero. Código: public class Exemplo6 { public static void main(String[] args) { float a; do { System.out.println("Introduza um número"); a = Le.umFloat(); if (a<0) { System.out.println("O número "+a+" é negativo"); } else if (a>0) { System.out.println("O número "+a+" é positivo"); } else { System.out.println("O número "+a+" não é positivo nem negativo"); } } while (a!=0); } } © DSI 5/32
  • 6. Séries de Exercícios de Introdução à Programação – Laboratórios Exemplo 7 Enunciado: Escreva um programa em Java que imprima os números inteiros de 4 a 10 inclusive. Código: public class Exemplo7 { public static void main(String[] args) { int i; for (i=4;i<=10;i++) { System.out.println("i é: "+i); } } } 6/32 © DSI
  • 7. Séries de Exercícios de Introdução à Programação – Laboratórios Série 2: Tipos Primitivos Objectivos da Série: Com esta série de problemas pretende-se que o aluno: 1. Aprenda a escolher o tipo de dados elementar mais apropriado à representação de quantidades inteiras. 2. Domine a utilização de tipos primitivos de dados Exercício 1 Mostre como podem os seguintes identificadores ser associados aos respectivos tipos de dados: indice -> inteiro cmax -> real cmin -> real codigo -> caracter estado -> booleano Exercício 2 Qual o valor das expressões constantes da tabela 1? Escreva um programa para verificar as soluções por si encontradas. 12*13/5%2+10-5 12/13/5%2+10-5 12%13/5%2+10-5 12+13/5%5+10-5 12-13/5%2+10-5 Tabela 1 Exercício 3 O programa da figura 1 usa o tipo de dado elementar short: class ShortEg { public static void main ( String[] args ) { short value = 32; System.out.println("A short: " + value); } } Figura 1 Alínea A Crie um ficheiro denominado ShortEg.java, compile-o e corra-o. Verifique o que o programa escreve no painel de mensagens. Alínea B Edite o programa e altere o valor 32 para um outro valor inteiro relativamente baixo, digamos 356. Compile e corra o programa. Em principio tudo deve correr bem. Alínea C Altere o valor para 90000 e tente compilar o programa. O que é que acontece? Porquê? Edite o programa e altere a palavra “short” para “int”. Compile e corra o programa. Qual a diferença entre esta e a alínea anterior? © DSI 7/32
  • 8. Séries de Exercícios de Introdução à Programação – Laboratórios Exercício 4 O programa da figura 2 usa o tipo de dado elementar double: class DoubleEg { public static void main ( String[] args ) { double value = 32; System.out.println("A double: " + value); } } Figura 2 Alínea A Compile e corra o programa. A saída (o que o programa escreve no painel de mensagens) deste programa difere de alguma forma da saída da alínea A do exercício nº3? Alínea B Altere o valor da variável B para um valor que seja demasiado grande para uma variável do tipo double. Vai precisar de usar notação científica para o conseguir. Exercício 5 O programa da figura 3 usa o tipo de dados elementar char: class CharEg { public static void main ( String[] args ) { char ch = 'A' ; System.out.println("A char: " + ch ); } } Figura 3 Experimente o seguinte: 1) Troque o 'A' por 'Z' compile e corra o programa. 2) Troque o 'A' por 'AA' tente compilar o programa. 3) Troque o 'A' por ' ' compile e corra o programa. Note que existe um espaço entre as duas plicas. 4) Troque o 'A' por '' tente compilar o programa. Note que não existe nada entre as duas plicas. 5) Troque o 'A' por "A" tente compilar o programa. Exercício 6 Para o programa apresentado na figura 4: Public class IncrementaDecrementa { public static void main (String[] args) { Boolean b = false; char c = ‘r’; byte j = 127; short k 32767; Syste.out.println(“c= “ + c); ++c; System.outprintln(“c= “ + c); ++c; System.outprintln(“c= “ + c); Systemout.println(“j= “ + j); --j System.out.println(“j= “ + j); ++j; System.outprintln(“j= “ + j) System.out.println(“k= “ + k); K -=4; System.out.println(“k= “ + k); K +=5; 8/32 © DSI
  • 9. Séries de Exercícios de Introdução à Programação – Laboratórios System.out.println(“k= “+ k); } } Figura 4 Alínea A Corrija os erros sintácticos do programa. Alínea B Escreva o resultado de cada uma das instruções da 6ª à 21ª linha de código. Exercício 7 Para o programa da figura 5: (note que está escrito a duas colunas) public class ConverteExpandindo { d = temp; /**Main method*/ temp = f; public static void main(String[] args) { f = l; // Escreve no painel de mensagens System.out.println(f); { double d = 1.7E308; f = i; float f = 3.4E38f; System.out.println(f); long l = 1234567890123456789L; f = c; int i = 1234567890; System.out.println(f); char c = 'z'; f = s; short s = 32767; System.out.println(f); byte b = 127; f = b; double temp; System.out.println(f); System.out.println(d); f = (float) temp; System.out.println(f); System.out.println(f); System.out.println(l); temp = i; System.out.println(i); i = c; System.out.println(c); System.out.println(i); System.out.println(s); i = s; System.out.println(b); System.out.println(i); temp = d; i = b; d = f; System.out.println(i); System.out.println(d); i = (int) temp; d = l; System.out.println(i); System.out.println(d); temp = c; d = i; c = (char) s; System.out.println(d); System.out.println(c); d = c; c = (char) b; System.out.println(d); System.out.println(c); d = s; c = (char) temp; System.out.println(d); System.out.println(c); d = b; } System.out.println(d); } } Figura 5 Alínea A Qual a resultado de cada uma das instruções de saída? Alínea B Quais as instruções de atribuição que originaram erros? © DSI 9/32
  • 10. Séries de Exercícios de Introdução à Programação – Laboratórios Exercício 8 Examine o programa da figura 6 class example { public static void main ( String[] args ) { long hoursWorked = 40; double payRate = 10.0, taxRate = 0.10; System.out.println("Hours Worked: " + hoursWorked ); System.out.println("pay Amount : " + (hoursWorked * payRate) ); System.out.println("tax Amount : " + (hoursWorked * payRate * taxRate) ); } } Figura 6 Alínea a Modifique-o por forma a que cada variável seja declarada individualmente e não seja inicializada aquando da declaração. Em seguida escreva três instruções de atribuição para associar o valor a cada uma das variáveis. Compile, corra o programa e examine a sua saída. Alínea B Agora vamos tentar quebrar o programa. 1) Remova uma das declarações de variáveis. Consegue compilar o programa? 2) Agora remova uma das instruções de atribuição que inicializam uma das variáveis. Quando é que o problema é detectado? Exercício 9 Considere as declarações de atribuição indicadas abaixo. Mostre o que fica guardado em iresult, fresult e sresult após cada atribuição. Basta verificar até à terceira casa decimal. int iresult,num1=25, num2=40, num3=17, num4=5; int num5=-14, num6=-27; double fresult, val1=17.0, val2=12.78; String sresult, title=”Java Software Solutions”; iresult= num1/num4; fresult=num1/num4; iresult=num3/num4; fresult=num3/num4; fresult=val1/num4; fresult=val1/val2; iresult=num1/num2; fresult=num1/num2; fresult= (double) num1/num2; fresult=num1/(double)num2; fresult= (double) (num1/num2),3); iresult= (int) (val1/num4); fresult= (int) (val1/num4); fresult= (int) ((double)num1/num2); iresult= num3%num4; iresult=num2%num3; iresult=num3%num2; iresult=num2%num4; iresult=num5%num4; iresult=num6%num5; iresult=title.length();fresult=title.length(); iresult=title.indexOf(‘t’); iresult=title.indexOf(‘q’); iresult=title.lastIndexOf(‘a’); sresult=title.toUpperCase(); sresult=title.replace(‘o’,’X’); sresult=title.substring(8); sresult=title.substring(8,16); iresult=(title.substring(8,16)).length(); sresult=title+num1; sresult=title+num1+num2; sresult=title+(num1+num2); iresult=Math.abs(num6); iresult=Math.abs(num1-num2); fresult=Math.sqrt(num2); fresult=Math.pow(num4,3); iresult=Math.max(num2,num3); iresult=Math.floor(val2); iresult=Math.ceil(val2); fresult=Math.sin(num2 + num1*2); fresult=Math.PI*num4; fresult=Math.pow(title.length(),2)+num3*Math.sqrt(num3/num4); Figura 7 10/32 © DSI
  • 11. Séries de Exercícios de Introdução à Programação – Laboratórios Exercício 10 Indique para as expressões abaixo os resultados. Assuma a seguinte declaração: Random rand= new Random( ); 1. rand.nextInt(); 2. Math.abs(rand.nextInt())%20; 3. Math.abs(rand.nextInt()%20); 4. Math.abs(rand.nextInt())% 8 + 1; 5. Math.abs(rand.nextInt())% 45 + 10; 6. Math.abs(rand.nextInt())% 100 - 50; 7. rand.nextInt() % 50; 8. rand.nextFloat(); 9. Math.random(); 10. Math.random()*8; 11. (int)Math.random()*20; 12. (int)Math.random()*20 + 1; Exercício 11 Para os exercícios seguintes escreva uma expressão usando o Objecto Random para gerar um número aleatório na gama de valores especificada (inclusive). 1. 0 a 10 2. 0 a 500 3. 1 a 10 4. 1 a 500 5. 25 a 50 6. –10 a 15 Exercício 12 Escreva uma expressão usando o método random da classe Math para gerar os números aleatórios na gama de valores especificada. 1. 0 a 10 2. 0 a 500 3. 1 a 10 4. 1 a 500 5. 25 a 50 6. –10 a 15 © DSI 11/32
  • 12. Séries de Exercícios de Introdução à Programação – Laboratórios Série 3: Entrada e saída de dados Objectivos da Série: Com esta série de problemas pretende-se que o aluno: 3. Aprenda a escrever no ecrã informação; 4. Aprenda a ler varios tipos de formatos de dados introduzidos pelo utilizador. Exercício 1 Considere que está interessado em calcular o valor do polinómio de 2º grau apresentado na figura 5 para diferentes valores de X. 3X2 -8X + 4 Escreva um programa que inclui uma variável de dupla precisão X. Atribua-lhe um valor. Escreva uma instrução que calcule o valor do polinómio e armazene o resultado numa outra variável. Finalmente escreva o resultado sob a forma: para X = 4.0 o resultado é 20.0. Exercício 2 Escreva um programa que calcule a média de precipitação de três meses, Abril, Maio e junho. Declare e inicialize uma variável com a precipitação de cada mês, calcule a média e escreva o resultado soba a forma: Precipitação em Abril: 12. Precipitação em Maio: 14. Precipitação em Junho 8 Média da precipitação: 11.333333 Para alinhar os valores numéricos use o caracter de tabulação ‘t’ como parte da string de caracteres nas instruções de saída. Verifique se o programa apresenta os resultados correctos. Exercício 3 Escreva um programa para resolver cada uma das seguintes situações a) Ler um número inteiro, multiplicá-lo por 2 e escrever o resultado. b) Ler dois números inteiros e escrever a sua soma, diferença e produto. c) Ler dois números reais e escrever a sua soma, diferença e produto. Exercício 4 Suponha que um café tem a seguinte ementa: prego: 3.5€, Batatas fritas: 1€, Sumo: 0.9€, Bolo: 0,8€, Café: 0,45€. Solicite o numero de doses de cada um dos comestíveis acima indicados e passe uma factura descriminada. Exercício 5 Escreva um programa para calcular a média de um conjunto de 10 números inseridos pelo utilizador. Exercício 6 Faça um programa que calcule a taxa de juro de uma conta bancária. Desta forma, terá de pedir ao utilizador que introduza o montante, a taxa de juro e o número de anos. De seguida, deve calcular os juros utilizando a formula: Montante_final = montante * (taxa_juro / 100) * numero_anos Por fim, deve mostrar no ecrã todos os dados obtidos da seguinte forma: Montante: 5000 € Taxa de Juro: 2,5% Numero de anos: 5 Montante final: 5625 € 12/32 © DSI
  • 13. Séries de Exercícios de Introdução à Programação – Laboratórios Exercício 7 Desenvolva um programa que peça ao utilizador três números inteior, guarde-os em três variaveis (a, b e c) e troque a ordem de forma a que: 1) o valor que estava na variavel a passe a ser o que estava na variavel b; 2) o valor que estava na variavel b passe a ser o que estava na variavel c; 3) o valor que estava na variavel c passe a ser o que estava na variavel a; Por fim escreva no ecrã o novo valor de cada variavel, com o seguinte formato: a = 10; b = 4; c = 1; Exercício 8 Faça um pequeno programa que mostre no ecrã os seu dados pessoais. Exercício 9 Altere o programa desenvolvido no exercício anterior de forma a introduzir os seu dados pessoais e só no fim é que mostra todos os seus dados pessoais de uma só vez. © DSI 13/32
  • 14. Séries de Exercícios de Introdução à Programação – Laboratórios Série 4: Instruções de selecção (IF e SWITCH) Objectivos da Série: Com esta série de problemas pretende-se que o aluno: 1. Aprenda a usar as estruturas de selecção if e switch 2. Domine a utilização das estruturas if e switch nas suas várias formas. Exercício 1 Este exercício deve utilizar a intrução de selecção if. Alínea A Escreva um programa para ordenar dois inteiros inseridos pelo utilizador. Alínea B Escreva um programa para ordenar três inteiros inseridos pelo utilizador. Alínea C Escreva um programa para ordenar quatro inteiros inseridos pelo utilizador. Exercício 2 Construa um programa que verifica se um número é par ou impar, numero esse introduzido pelo utilizador. Exercício 3 Crie um programa que leia dois números inteiros e informe o utilizador se o primeiro é divisível pelo segundo. Exercício 4 Escreva um programa em Java que converta notas quantitativas de 0 a 20 em notas qualitativas de mau a excelente, utilizando uma estrutura de if’s encadeados e que verifique o limite superior das gamas de cada uma das notas qualitativas. Considere que: 0-4:Mau; 5-9:Mediocre; 10-13:Suficiente; 14-17:Bom; 18-20:Muito Bom. Exercício 5 Escreva um programa em Java que aceite três nomes e os imprima por ordem alfabética crescente. Use o método comparedTo() da classe String. O método comparedTo() tem o seguinte comportamento: String s1=”CAPACIDADE”; String s2=”CAPAZ”; s1.comparedTo(s2) devolve um valor inteiro negativo. s2.comparedTo(s2) devolve 0. s2.comparedTo(s1) devolve um valor inteiro positivo. Exercício 6 Utilizando a linguagem Java, crie um programa que receba do utilizador um número correspondente a um mês, e apresente no monitor o mês correspondente. (Nota: 1=JAN, 2=FEV, 3=MAR,…). Deve usar a instrução de selecção switch. 14/32 © DSI
  • 15. Séries de Exercícios de Introdução à Programação – Laboratórios Exercício 7 Crie um programa, pede ao utilizador para introduzir dois números e a operação aritmética (*, /, -, +) que quer efectuar, pretende-se imprimir o resultado da operação matemática entre ambos. Exercício 8 Escreva um programa que apresente uma lista de 5 livros diferentes ao utilizador, pedindo- lhe que seleccione um deles. Para o livro seleccionado, informe o utilizador do preço do livro. Exercício 9 Desenvolva um programa que mostra ao utilizador o seguinte menu: 1 – Nome 2 – Idade 3 – Nacionalidade 4 – Sair E por fim, peça ao utilizador que introduza a opção que deseja visualizar e mostra qual foi essa opção escolhida. Use a intrução switch. Exercício 10 Altere o exercicio anterior de forma a pedir os dados do utilizador no inicio do programa. No entanto, sempre que escolher uma das opções mostra os dados e de seguida pergunta se deseja alterar os dados dessa mesma opção. Caso o utilizador deseje alterar deve alterar e depois mostrar toda a informação do utilizador. © DSI 15/32
  • 16. Séries de Exercícios de Introdução à Programação – Laboratórios Série 5: Estruturas de Repetição (WHILE, DO-WHILE e FOR) Objectivos da Série: Com esta série de problemas pretende-se que o aluno: 1. Pratique a utilização dos comandos while, do-while e for; 2. Domine a utilização das estruturas while, do-while e for nas suas várias formas. Exercício 1 Escreva um programa, que analisa um número aleatório, informando se este é primo ou não. Alínea A Use a estrutura de repetição while. Alínea B Use a estrutura de repetição do-while. Exercício 2 Crie um programa, em Java, que receba um número inteiro e informe quantos dígitos foram introduzidos. Alínea A Use a estrutura de repetição while. Alínea B Use a estrutura de repetição do-while. Exercício 3 Escreva um programa que leia um conjunto de números inteiros e termine quando for introduzido um número negativo, indicando quantos números foram introduzidos e qual é o maior e o menor número introduzido. Use a estrutura do-while. Exercício 4 Escreva um programa, que leia um número inteiro e calcule a soma dos seus dígitos. Use a estrutura while. Exercício 5 Faça um programa que lê uma sequência de números inteiros positivos e calcule a sua soma. A quantidade de números é desconhecida à partida. A sequência de entrada só termina quando for introduzido um número zero. Use a estrutura do-while. Exercício 6 Crie um programa que calcule a soma de n primeiros números positivos, sendo o valor de n fornecido pelo utilizador. Use a estrutura while. Exercício 7 Faça um programa, que calcule a média de 5 números aleatórios. Use a estrutura for. Exercício 8 Escreva um programa que imprima a soma dos primeiros 20 números ímpares. Use a estrutura for. 16/32 © DSI
  • 17. Séries de Exercícios de Introdução à Programação – Laboratórios Exercício 9 Escreva um programa que peça ao utilizador que introduza um número inteior, e verifique se esse mesmo número inteiro é divisível por 1 até ao número introduzido. Use a estrutura for. Exercício 10 Desenvolva um programa que mostra todos os números primos até 1000, por ordem decrescente. Use a estrutura for. Exercício 11 Escreva um programa que gera aleatoriamente um número entre 1 e 100, e pede ao utilizador que acerte nesse número. Quando o utilizador introduz o número, deve indicar se este é maior ou menor ou igual ao gerado. O jogador tem 10 tentativas. Se o jogador acertar antes das tentativas terminarem deve indicar que o jogador ganhou e o número de tentativas que utilizou. Use a estrutura for. © DSI 17/32
  • 18. Séries de Exercícios de Introdução à Programação – Laboratórios Série 6: Métodos – Passagem de parâmetros Objectivos da Série: Com esta série de problemas pretende-se que o aluno: 1. Pratique a utilização da passagem de parâmetros. 2. Aprenda como interagir programas e subprogramas. Exercício 1 Faça um programa para o cálculo da expressão f(x)=x 2 + 2x + 10, para os vários valores de x. (Nota: considere x os primeiros 10 valores inteiros). Exercício 2 Escreva um programa em que obtenha 2 números aleatórios, entre 1 e 20, e retorne o máximo entre ambos. Exercício 3 Faça um programa que calcula o cubo dos primeiros 10 números inteiros. Exercício 4 Faça um programa que leia três números inteiros e calcule a sua média. Recorra a um método para determinar a média pretendida. Exercício 5 Escreva um método chamado sinal, que receba um número inteiro e retorne 1, -1 ou 0 caso o número seja maior, menor ou igual a zero, respectivamente. Exercício 6 Escreva um programa, em Java, que contenha um método potência, que receba uma base e um expoente e calcule o valor da base elevado ao expoente. O expoente é sempre maior ou igual a zero e, a base é sempre representado por números inteiros positivos. 18/32 © DSI
  • 19. Séries de Exercícios de Introdução à Programação – Laboratórios Série 7: Classes e Objectos Objectivos da Série: Com esta série de problemas pretende-se que o aluno: 1. Aprenda a criar e instanciar Classes. Variáveis e Métodos de Instâncias. 2. Aprenda como interagir entre Classes. Exercício 1 Programa para registo e consulta de veículos automóveis para stand de usados. a) Defina uma classe Automóvel, que tem a seguinte informação • Marca • Ano • Nº Série motor • Cor • Preço b) Defina um método construtor para a classe Automóvel que inicializa os valores dos atributos através da passagem de argumentos definidos na alínea a) c) Defina os seguintes métodos a) getMarca – retorna o valor do atributo marca b) getAno – retorna o valor do atributo ano c) getSerie – retorna o valor do atributo Série d) getCor – retorna o valor do atributo Cor d) Elabore um programa onde: • Na classe principal cria 2 automóveis, através da criação de objectos da classe Automóvel. • Defina um método para preenchimento de dados sobre um automóveis. e) Defina na classe principal os seguintes métodos: • procuraMarca – lista o automóvel de uma determinada marca • listaAutomovel – lista as características do automóvel pelo seu nº de série. f) Considere que se pretende trocar os atributos entre ambos automóveis. Para isso, crie um método para efectuar a troca pretendida. Para verificar os resultados, imprima os atributos dos automóveis, antes e depois da troca. Nota : Recorra à passagem por referência no método para aceder e alterar os dados do objecto. © DSI 19/32
  • 20. Séries de Exercícios de Introdução à Programação – Laboratórios Exercício 2 Pretende-se criar uma conta bancária para dois clientes. Para isso, implemente um programa que permita: 1. Inserir os dados dos clientes. 2. Procurar o cliente através do seu número de contribuinte e imprimindo, em seguida, os seus dados. Assim, pretende-se que: a) Defina uma classe Cliente com a seguinte informação: • nome – nome do Cliente • n_Contribuinte – número do contribuinte • morada – Morada do cliente • telefone – Telefone/telemóvel para contacto b) Na classe criada defina os seguintes métodos: • setNome – modifica o valor do atributo nome • getNome – retorna o conteúdo do atributo nome • setContribuinte - modifica o valor do atributo n_contribuinte • getContribuinte - retorna o conteúdo do atributo n_contribuinte • setMorada - modifica o valor do atributo morada • getMorada - retorna o conteúdo do atributo morada • setTelefone - modifica o valor do atributo telefone • getTelefone - retorna o conteúdo do atributo telefone c) Defina na classe principal os seguintes métodos: • Método para preenchimento dos dados do Cliente: public static Cliente preencheDados() • Método para procurar o cliente com base no seu número de contribuinte: public static Cliente FindCliente(Cliente first,Cliente second,int contrib){ • Método para imprimir os resultados: public static void verificaCliente(Cliente testeCliente) • Método main, onde invoque cada um dos métodos acima implementados. Exercício 3 Implemente um programa para registo e consulta de informação sobre os funcionários de uma empresa a) Defina uma classe Funcionário que tem a seguinte informação: • nome – nome do Funcionário • n_Bi – nº do BI • categoria – categoria da função • ordenado – ordenado base 20/32 © DSI
  • 21. Séries de Exercícios de Introdução à Programação – Laboratórios b) Defina um método constructor para a classe Funcionário que inicialize os valores dos atributos através da passagem de argumentos definidos na alínea a) c) Defina os seguintes métodos • getNome – retorna o valor do atributo nome • getBI – retorna o valor do atributo BI • getCategoria – retorna o valor do atributo categoria • getOrdenado – retorna o valor do atributo ordenado • setOrdenado – modifica o valor do atributo ordenado • setCategoria – modifica o valor do atributo categoria d) Elabore uma classe principal onde : • Crie 2 funcionários, através da criação de objectos da classe Funcionário • Defina um método para preenchimento dados de um funcionário que retorne o objecto preenchido. e) Defina na classe principal os seguintes métodos • procura Funcionário – lista os atributos do funcionário pelo seu nº de BI • calculaOrdenado – para um determinado funcionário calcula o seu ordenado líquido, supondo que desconta 11% para a Segurança Social, 20% para o IRS e 15 EUR para a quota associativa da empresa. • calculaTotalOrdenado – determina qual o montante total que a empresa despende com ordenados dos dois funcionários por mês. © DSI 21/32
  • 22. Séries de Exercícios de Introdução à Programação – Laboratórios Série 8: Métodos Recursivos Objectivos da Série: Com esta série de problemas pretende-se que o aluno: 1. Pratique a utilização dos métodos recursivos. Exercício 1 Utilizando a recursividade, obtenha os primeiros 12 números da sequência de Fibonacci. Exercício 2 A função seno(x) pode ser calculada somando os n primeiros termos da séria infinita, dado n que é um inteiro e x um número real, tal como se exprime na figura 1. x3 x5 x7 x9 xn Sen(x) = x − + − + − .... 3! 5! 7! 9! n! Figura 1 Os valores de x são expressos em radianos. a) Escreva uma função que calcule iterativamente o sen(x). b) Escreva uma função que calcule recursivamente o sen(x). Exercício 3 Sabe-se que a divisão pode ser obtida através de uma série de subtracções. Escreva uma função recursiva, de dois argumentos inteiros, chamada divisão, que retorne o resultado da divisão inteira do primeiro argumento pelo segundo. A função apenas pode utilizar as operações de adição e subtracção. Exercício 4 O máximo divisor comum entre dois números pode ser calculada por : n1 se n2=0 mdc(n1,n2) = mdc(n2,mod(n1,n2)) se n2<>0 Figura 2 Escreva um programa que leia 2 números inteiros e calcule o seu mdc. Exercício 5 Faça um programa que, utilizando o método recursivo, implemente o triângulo de Pascal. O Triângulo de Pascal é dado pela seguinte expressão: 1 se k=0 ou k=n C(n,k) = C(n-1,k) + c(n-1,k-1) se 0<k<n Figura 3 22/32 © DSI
  • 23. Séries de Exercícios de Introdução à Programação – Laboratórios Resultado pretendido: 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 1 6 15 20 15 6 1 1 7 21 35 35 21 7 1 1 8 28 56 70 56 28 8 1 Exercício 6 Escreva o seguinte método recursivo que retorne a sequência de n termos referentes ao número triangular. static long t(int n) Os números triangulares são 0 1 3 6 10 15 21 28 ... e são dados pela expressão seguinte: t(n) = t(n-1) + n para n > 1 © DSI 23/32
  • 24. Séries de Exercícios de Introdução à Programação – Laboratórios Série 9: Tabelas Objectivos da Série: Com esta série de problemas pretende-se que o aluno: 1. Pratique aprofundadamente o uso das instruções de repetição 2. Aprenda a definir, inicializar, e manipular tabelas de tipos primitivos. 3. Domine o uso de tabelas unidimensionais e multi-dimensionais. 4. Saiba definir tabelas de objectos e efectuar operações sobre as mesmas Exercício nº 1 Implemente o método soma que retorna a soma dos elementos se uma tabela. A assinatura do método é a que se segue: static double soma(double[] x) Exercício nº 2 Implemente o método para tabelas que troca entre si os elementos da tabela t da posição i e j, tendo em conta a seguinte assinatura: static void troca(int[] t, int i, int j) Exercício nº 3 Implemente o método mover, com a assinatura abaixo descrita, que move o elemento da tabela t da posição i para a posição j Exemplo: Se t representa a lista {22,33,44,55,66,77}, então mover(v,4,1) resulta em {22,66,33,44,55,77} static void mover(int[] t, int i, int j) Exercício nº 4 Implemente uma classe que contenha os dois métodos acima definidos e que o método “main” permita testar o método troca e o método mover. Exercício nº 5 Considere a seguinte declaração: char[][] m={{‘c’,’f’,’a’}, {‘q’,’q’,’w’},{‘i’,’p’,’j’}}; Alínea a Qual a dimensão da tabela m ? 24/32 © DSI
  • 25. Séries de Exercícios de Introdução à Programação – Laboratórios Alínea b Quantos elementos tem a tabela m? Alínea c Qual o tipo dos elementos da tabela ? Exercício nº 6 Alinea a Implemente o método trianguloDePascal que calcula e mostra no ecran as n primeiras linhas do triângulo de Pascal. As linhas do triângulo de pascal calculam-se colocando no primeiro e último elemento de cada linha 1 e nos restantes elementos a soma dos elementos da linha anterior na posição imediatamente antes e depois do elemento que estamos a calcular. Exemplo de um Triângulo de Pascal de dimensão 6: [0] [1] [2] [3] [4] [5] [0] 1 [1] 1 1 [2] 1 2 1 [3] 1 3 3 1 [4] 1 4 6 4 1 [5] 1 5 10 10 5 1 A assinatura do método a implementar é a que se segue: static int[][] trianguloDePascal(int n) Alinea b Implemente uma classe que contenha o método trianguloDePascal e que permita testá-lo (pedindo o valor n ao utilizador e escrevendo no ecran o triângulo de pascal correspondente) Exercício nº 7 Implemente o método produtoExterno que calcula o produto externo entre dois vectores. A matriz resultante calcula-se da seguinte forma p[i][j]=x[i]*y[j], onde x e y são os vectores de entrada static double[][] produtoExterno(double[] x, double[] y) © DSI 25/32
  • 26. Séries de Exercícios de Introdução à Programação – Laboratórios Exercício nº 8 Temos um sistema para validar as matrizes do totoloto. O sistema digitaliza os impressos e converte cada aposta numa matriz de booleanos de 7 x 7. Cada elemento da matriz corresponde um número de 1-49 e se este tiver o valor lógico verdade significa que o número correspondente faz parte da aposta: Exemplo: Esta aposta do totoloto 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 Corresponde a esta matriz T F F F F F F F F T F F F F F F F T F F F F F F F F F F F F F F T T F F F F F F F F T F F F F F F Alinea a Escreva um método que, tendo a assinatura abaixo descrita, receba como entrada a matriz de aposta e devolva uma tabela com os números apostados: static int[] apostaTotoloto(boolean[][] m) Alinea b Escreva um método que receba como entrada a matriz de aposta e devolva um valor do tipo boolean que diz se esta é valida. Nota: poderá haver apostas múltiplas, com 7,8,9,10,11, e 12 números static boolean apostaValidaTotoloto(boolean[][] m) Alinea c Escreva um programa que peça ao utilizador a sua aposta do totoloto e verifique se esta é válida e caso não seja, dê uma mensagem de erro. Exercício nº 9 Treinando álgebra de matrizes.... Implemente um método que multiplique duas matrizes de inteiros. static int[ ][ ] produtoMatrizes(int[ ][ ] m1, int[ ][ ]m2) 26/32 © DSI
  • 27. Séries de Exercícios de Introdução à Programação – Laboratórios Exercício nº 10 Treinando álgebra de matrizes.... Implemente um método que verifique se a matriz dada é a matriz identidade. static boolean identidadeMatriz(int[ ][ ] m1) Exercício nº 11 Treinando álgebra de matrizes.... Implemente um método que dado uma matriz calcula a matriz transposta. static int[ ] [ ] transpostaMatriz(int[ ][ ] m1) Exercício nº 12 Programa para introdução e consulta de veículos automóveis para um stand . a) Defina uma classe Automóvel, com os atributos • Marca • Nº Série motor • Cor • Preço b)Defina um método construtor para a classe Automóvel que inicializa os valores dos atributos através da passagem de argumentos definidos na alínea a) c)Defina os seguintes métodos • getMarca – retorna o valor do atributo marca • getPreço – retorna o valor do atributo preço • getSerie – retorna o valor do atributo Série • getCor – retorna o valor do atributo Cor d)Crie uma Classe Menus onde deve ser possível: • Introduzir Automóveis na Base de dados • Listar dados dos automóveis respectivos através da inserção do número de série • Listar dados dos automóveis respectivos através da inserção da marca e)Defina na classe de teste, uma Base de dados com informação de automóveis, através da criação de uma tabela de objectos da classe Automóvel © DSI 27/32
  • 28. Séries de Exercícios de Introdução à Programação – Laboratórios Série Nº10– Procura e Ordenação de elementos em tabelas Objectivos da Série: Com esta série de problemas pretende-se que o aluno: 1. Pratique o uso do comando o uso de tabelas e da passagem de tabelas como parametros 2. Aprenda a implementar algoritmos de procura 3. Domine algoritmos de procura e uso de tabelas 4. Aprenda a implementar algoritmos de ordenação 5. Domine a ordenação de tabelas segundo vários métodos Exercício nº 1 Implemente o método minimo retorna o menor valor dos elementos da tabela x. static double minimo(double[] x) Exercício nº 2 Implementa o método iMaximo que retorna o indice do elemento de maior valor da tabela x: static int iMaximo(double[] x) Exercício nº 3 Implementa o método gama que retorna a diferença entre o valor mínimo e o valor máximo dos elementos da tabela x. static double gama(double[] x) Exercício nº 4 Implementa o método iguais que retorna o valor lógico verdade se as duas tabelas forem iguais, ou seja se os valores dos elementos dos dois vectores corresponderem entre si: static boolean iguais(double[] x , double[] y) Exercício nº 5 Implemente a classe TabelaTeste, que contenha os métodos definidos em 1, 2 e 3. Esta classe deve ainda conter um método main, que: 1. Implemente a leitura das duas tabelas. 2. Imprima no ecran os seguintes resultados: • O mínimo dos valores da 1ª e 2ª tabela • A gama de valores da 1ª e 2ªa tabela • Se as duas tabelas são iguais. Exercício nº 6 Temos uma tabela com as temperaturas médias ao longo dos dias de mês. Queremos saber para um determinado mês: 1. Qual foi a temperatura mais baixa 28/32 © DSI
  • 29. Séries de Exercícios de Introdução à Programação – Laboratórios 2. Em que dia ocorreu a temperatura mais elevada 3. Qual foi a diferença entre a temperatura mais baixa e a temperatura mais alta. Implemente um programa que cumpra os requisitos acima descritos usando os métodos definidos no Exercícios 1, 2, 3. Exercício nº 7 Alinea a Implemente o método procuraInteiro que procura na tabela v, que tem como critério de paragem o valor de s, se esta contém o elemento x. Caso a procura seja realizada com sucesso retorna o índice do elemento, senão retorna –1. public static int procuraInteiro(int[] v, int x, int s) Alinea b Implemente o método leInteiro que retorna uma tabela com os inteiros introduzidos, através do teclado. O último elemento tem o valor s. Sendo assim, quando o utilizador digitar o valor de s é porque a introdução de valores terminou. public static int[] leInteiro(int s) Alinea c Modifique o método da alínea a) de modo a poder ser feita procura em parte da lista, ou seja procura na tabela v entre os indices inicio e fim, do elemento x. Tendo como critério de paragem o valor s. Caso a operação seja realizada com sucesso retorna o índice do elemento, senão retorna o valor –1. public static int procuraInteiro(int[] v, int x, int s, int inicio, int fim) Alinea d Implemente um programa que : 1. Leia a nota dos trabalhos de IP por grupo. 2. Pergunte ao utilizador qual a nota que pretende saber: 3. Imprima o nº dos grupos que tiveram a nota lida no ponto 2 Nota: Utilize os métodos definidos anteriormente Exercício 8. Um sistema de controlo de presenças ligado ao sistema de marcação de ponto, mantém uma lista de todos os trabalhadores que num determinado momento se encontram dentro da empresa. É necessário implementar um método que dado o nome de uma pessoa, ele nos valide se esta pessoa se encontra dentro da empresa ou não. Utilize a procura binária na implementação desta função. Nota: a lista é terminada com a palavra “ * ‘” public static boolean procuraPessoa(String[] v) © DSI 29/32
  • 30. Séries de Exercícios de Introdução à Programação – Laboratórios Exercício 9 Existe um sistema informático na escola para inscrição dos alunos para os testes de I.P. O programa pede aos alunos que se inscrevem o número e o nome . Após as inscrições terem terminado o programa disponibiliza várias funcionalidades: 1. Conta o nº de alunos inscritos 2. Imprime no ecran o nº de aluno e o seu nome por ordem crescente do nº de aluno. Alínea a Implemente um método que permita contar o nº de alunos inscritos Alínea b Implemente um método que permita ordenar ,usando o algoritmo selecion sort, os alunos por número na ordem crescente. Nota. Deverá ser mantida a correspondência entre nº de aluno e nome. Alínea c Implemente o programa descrito acima usando os métodos que implementou na alínea a) e na alínea b). Exercício 10 Implemente um programa que: • Ordene usando o algoritmo BubbleSort a matriz: a f d g b j x o l • Apresente a matriz ordenada em ordem crescente da esquerda para a direita e de baixo para cima no ecran, devendo ser o resultado final obtido: a b d f g j l o x 30/32 © DSI
  • 31. Séries de Exercícios de Introdução à Programação – Laboratórios Exercício 11 Implemente um programa que: 1. receba o registo de emails (nome e morada) 2. guarde estes registos numa tabela 3. Ordene a tabela por nome, segundo o método quicksort. 4. Apresente em seguida o resultado no ecran. Exercício 12 Os procedimentos de ordenação apresentados nesta série correspondem a uma ordenação destrutiva, pois a tabela original é destruída e substituída pela tabela ordenada. Um processo alternativo consiste em criar uma tabela com índices, que representam as posições ordenadas dos elementos por selecção, criando uma tabela com índices. Implemente um método para efectuar a ordenação por selecção, criando uma tabela com índices. Exercício 13 A aplicação CarrosUsados é uma aplicação para busca de informação sobre carros usados. Contém informação sobre o modelo do carro, marca , ano e preço. Permite realizar as seguintes opções: 1. Listagem ordenada por modelo 2. Listagem ordenada por marca 3. Listagem ordenada por ano 4. Listagem ordenada por preço 5. Listagem ordenada por modelo, marca, preço 6. Listagem ordenada por modelo, marca, ano public class CarrosUsados { public String marca, modelo; public int ano,preco; … } Alínea a Defina o método que implementa a ordenação da tabela de carros usados por modelo. Alínea b Defina o método que implementa a ordenação da tabela de carros usados por preço. Alínea c Defina o método que implementa a ordenação da tabela primeiro por modelo, segundo por marca, terceiro por preço. © DSI 31/32
  • 32. Séries de Exercícios de Introdução à Programação – Laboratórios Exercício nº 14 Uma loja pretende dispor os seus artigos de vestuário segundo cores. Para isso precisa de fazer uma pequena alteração à aplicação de suporte à gestão da loja, de modo a acrescentar a funcionalidade de listagem de artigos por ordem de cor . Sendo a ordem de cores desejada (amarelo,laranja,castanho,beje,verde,azul,vermelho,cinzento,preto). Implemente o método que permite reordenar a tabela de objectos ArtigoVestuario segundo a ordem de cores desejada public class ArtigoVestuario { public int cod; public String artigo, cor; ... } Exercício nº 15 Pretende-se ordenar objectos da classe Data. Esta classe contém os campos dia,mês e ano. Alínea a Ecreva a declaração para a classe Data. Alínea b Escreva a declaração para uma tabela de tamanho 100 , cujos elementos são da classe Data. Alínea c Implemente o método ordenaData que ordena de forma crescente ou decrescente uma tabela de objectos da classe Data 32/32 © DSI