1
Introdução à Lógica e Programação
PUC
1
Introdução à Lógica e Programação
PUC
1
Introdução à Lógica e Programação
PUC
2
Introdução à Lógica e Programação
PUC
6
Introdução à Lógica e Programação
PUC
9
Introdução à Lógica e Programação
PUC
2
Introdução à Lógica e Programação
PUC
1
Introdução à Lógica e Programação
PUC
1
Introdução à Lógica e Programação
PUC
8
Introdução à Lógica e Programação
PUC
Texto de pré-visualização
05 5 Analise o seguinte trecho de código em Java criado a partir de uma classe Base que possui um construtor que recebe um parâmetro inteiro e um método chamado set que também recebe um valor inteiro Base a new Base2 a0 new Base20 a1set30 Base b Base c new Base10 Considerando este trecho de código qual das afirmações a seguir está ERRADA A c é uma referência válida para um objeto da classe Base cujo construtor foi chamado com valor 10 e que está pronto para ser utilizado B a é uma referência para um array de objetos da classe Base e que está apontando para uma área capaz de armazenar 2 objetos da classe Base B b é uma referência para um array de objetos da classe Base que só poderá ser efetivamente usada se for apontada para algum área onde haja objetos da classe Base devidamente instanciados D a0 é uma referência válida que aponta para um objeto da classe Base cujo construtor foi chamado com valor 20 e que está pronto para ser utilizado E a1 é uma referência válida para um objeto da classe Base cujo método set está sendo chamado tendo 30 como parâmetro PONTIFÍCIA UNIVERSIDADE CATÓLICA DO RIO GRANDE DO SUL Escola Politécnica Curso Ciência da Computação Disciplina Fundamentos de Programação Turma Data Nome G1 P1 P2 X SUBALUNO Substituição G2 Nota Prof Roland Teodorowitsch 33 1 Seu irmão mais novo está aprendendo programação e começou a fazer um programa para descobrir qual clube venceu mais vezes a Copa do Brasil de Futebol mas ele está com dificuldades e pediu a sua ajuda para concluir o programa Por enquanto ele fez um programa que obtém o nome dos campeões de 1989 até 2019 inclusive import javautilScanner public class CopaDoBrasil public static void mainString args Scanner in new ScannerSystemin String campeao for int i1989 i2019 i SystemoutprintCampeao de i campeao innextLine No entanto este programa contém apenas variáveis simples E será preciso trabalhar com arrays Portanto sua tarefa será reescrever este programa para que depois de ler o nome de todos os clubes que foram campeões em cada ano mostre qual foi o clube que mais vezes foi campeão Caso mais de um clube tenha sido campeão por mais vezes todos os clubes que foram campeões por mais vezes devem ser mostrados 25 2 Considere uma aplicação que precisa armazenar informações sobre as unidades federativas brasileiras Para cada unidade federativa é preciso armazenar nome sigla capital área em km² e população E também é preciso calcular a densidade populacional lembrese que a densidade computacional corresponde ao número de habitantes por km² e não se esqueça de prevenir a divisão por zero Crie uma classe para armazenar e gerenciar as informações das unidades federativas para ser usada nesta aplicação Para esta classe declare variáveis de instância defina um construtor sem parâmetros e um construtor com todos os parâmetros não calculados bem como métodos de acesso accessors métodos de alteração mutators e um método para impressão das informações sobre a unidade federativa 12 3 Crie uma classe para testar a classe criada na questão anterior Esta classe deve 1 criar um objeto da classe para unidades federativas com o construtor sem parâmetros definindo a seguir todos os atributos deste objeto usando os métodos de alteração mutators e imprimindo as informações com o método de impressão e 2 criar um objeto da para unidades federativas com o construtor que recebe todos os parâmetros imprimindo cada informação armazenada individualmente com os métodos de acesso accessors 25 4 Escrever um programa em Java que lê um valor inteiro maior do que 1 que corresponde à ordem de uma matriz quadrada de inteiros que deve ser alocada e cujos valores devem ser lidos O programa deve imprimir a soma dos valores que estão abaixo da diagonal secundária dessa matriz Por exemplo se a ordem for igual a 5 e a matriz contiver exatamente os seguintes valores j 0 1 2 3 4 i 0 9 9 9 9 7 1 9 9 7 9 1 2 9 9 7 1 1 3 9 7 1 1 1 4 7 1 1 1 1 o resultado deverá ser 10 Exercício 1 import javautilScanner public class CopaDoBrasil public static void mainString args Scanner scanner new ScannerSystemin String clubes new String31 int contagem new int31 for int i 0 i 31 i clubesi contagemi 0 for int i 1989 i 2019 i SystemoutprintCampeão de i String campeao scannernextLine int indice encontrarIndiceclubes campeao if indice 1 indice encontrarIndiceVazioclubes clubesindice campeao contagemindice int maxContagem encontrarMaxContagemcontagem Systemoutprintln Clubes com mais títulos for int i 0 i 31 i if contagemi maxContagem Systemoutprintlnclubesi scannerclose private static int encontrarIndiceString array String valor for int i 0 i arraylength i if arrayiequalsIgnoreCasevalor return i return 1 private static int encontrarIndiceVazioString array for int i 0 i arraylength i if arrayiisEmpty return i return 1 private static int encontrarMaxContagemint array int max 0 for int i 0 i arraylength i if arrayi max max arrayi return max EXPLICAÇÃO O código em Java solicita ao usuário o nome do clube campeão da Copa do Brasil para cada ano de 1989 a 2019 Em seguida ele conta quantos títulos cada clube possui e exibe os clubes com o maior número de títulos O programa armazena os nomes dos clubes em um array e utiliza métodos para encontrar o índice correto e atualizar as contagens Por fim ele mostra os clubes com mais títulos da Copa do Brasil Exercício 2 public class UnidadeFederativa private String nome private String sigla private String capital private double area private int populacao Construtor sem parâmetros public UnidadeFederativa Construtor com todos os parâmetros não calculados public UnidadeFederativaString nome String sigla String capital double area int populacao thisnome nome thissigla sigla thiscapital capital thisarea area thispopulacao populacao Métodos de acesso accessors public String getNome return nome public String getSigla return sigla public String getCapital return capital public double getArea return area public int getPopulacao return populacao Métodos de alteração mutators public void setNomeString nome thisnome nome public void setSiglaString sigla thissigla sigla public void setCapitalString capital thiscapital capital public void setAreadouble area thisarea area public void setPopulacaoint populacao thispopulacao populacao Método para cálculo da densidade populacional public double calcularDensidadePopulacional if area 0 return populacao area else return 0 Método para impressão das informações sobre a unidade federativa public void imprimirInformacoes SystemoutprintlnNome nome SystemoutprintlnSigla sigla SystemoutprintlnCapital capital SystemoutprintlnÁrea area km² SystemoutprintlnPopulação populacao SystemoutprintlnDensidade Populacional calcularDensidadePopulacional habkm² EXPLICAÇÃO A classe UnidadeFederativa é responsável por armazenar e gerenciar informações sobre as unidades federativas brasileiras como nome sigla capital área em km² e população Além disso a classe possui métodos para calcular a densidade populacional e imprimir as informações da unidade federativa Ela permite o acesso e a modificação dos atributos e fornece funcionalidades relevantes para a aplicação que utiliza essas informações Exercício 3 public class TesteUnidadeFederativa public static void mainString args Teste 1 Objeto com construtor sem parâmetros UnidadeFederativa uf1 new UnidadeFederativa uf1setNomeSão Paulo uf1setSiglaSP uf1setCapitalSão Paulo uf1setArea2482194 uf1setPopulacao46289333 uf1imprimirInformacoes Cálculo e impressão da densidade populacional para o teste 1 double densidadePopulacional1 uf1calcularDensidadePopulacional SystemoutprintlnDensidade Populacional densidadePopulacional1 habkm² Teste 2 Objeto com construtor que recebe todos os parâmetros UnidadeFederativa uf2 new UnidadeFederativaRio de Janeiro RJ Rio de Janeiro 437807 17366189 SystemoutprintlnNome uf2getNome SystemoutprintlnSigla uf2getSigla SystemoutprintlnCapital uf2getCapital SystemoutprintlnÁrea uf2getArea km² SystemoutprintlnPopulação uf2getPopulacao Cálculo e impressão da densidade populacional para o teste 2 double densidadePopulacional2 uf2calcularDensidadePopulacional SystemoutprintlnDensidade Populacional densidadePopulacional2 habkm² EXPLICAÇÃO A classe apresentada é um exemplo de teste para a classe UnidadeFederativa Ele cria objetos da classe um com o construtor sem parâmetros e outro com o construtor que recebe todos os parâmetros Em seguida são definidos os valores dos atributos e as informações são impressas O código demonstra como utilizar os métodos de acesso e alteração da classe além de calcular e exibir a densidade populacional para cada unidade federativa Esse exemplo ilustra o uso da classe e como manipular seus atributos de forma simples e intuitiva Exercício 4 import javautilScanner public class SomaAbaixoDiagonalSecundaria public static void mainString args Scanner input new ScannerSystemin Leitura da ordem da matriz SystemoutprintDigite a ordem da matriz quadrada int ordem inputnextInt if ordem 1 SystemoutprintlnA ordem da matriz deve ser maior do que 1 return Declaração e alocação da matriz int matriz new intordemordem Leitura dos valores da matriz SystemoutprintlnDigite os valores da matriz for int i 0 i ordem i for int j 0 j ordem j matrizij inputnextInt Cálculo da soma abaixo da diagonal secundária int soma 0 for int i 0 i ordem i for int j 0 j ordem j if i j ordem 1 soma matrizij Impressão da soma SystemoutprintlnA soma dos valores abaixo da diagonal secundária é soma EXPLICAÇÃO Este programa lê a ordem de uma matriz quadrada e seus valores Em seguida ele calcula a soma dos valores que estão abaixo da diagonal secundária da matriz ou seja onde a soma das coordenadas é maior do que o valor da ordem menos 1 Por fim imprime o resultado da soma encontrada Exercício 5 A afirmação INCORRETA é a Letra C A variável b foi declarada mas não foi inicializada com nenhum objeto ou array de objetos da classe Base Portanto não é possível utilizar b efetivamente até que ela seja atribuída a um objeto ou array de objetos da classe Base corretamente instanciados
1
Introdução à Lógica e Programação
PUC
1
Introdução à Lógica e Programação
PUC
1
Introdução à Lógica e Programação
PUC
2
Introdução à Lógica e Programação
PUC
6
Introdução à Lógica e Programação
PUC
9
Introdução à Lógica e Programação
PUC
2
Introdução à Lógica e Programação
PUC
1
Introdução à Lógica e Programação
PUC
1
Introdução à Lógica e Programação
PUC
8
Introdução à Lógica e Programação
PUC
Texto de pré-visualização
05 5 Analise o seguinte trecho de código em Java criado a partir de uma classe Base que possui um construtor que recebe um parâmetro inteiro e um método chamado set que também recebe um valor inteiro Base a new Base2 a0 new Base20 a1set30 Base b Base c new Base10 Considerando este trecho de código qual das afirmações a seguir está ERRADA A c é uma referência válida para um objeto da classe Base cujo construtor foi chamado com valor 10 e que está pronto para ser utilizado B a é uma referência para um array de objetos da classe Base e que está apontando para uma área capaz de armazenar 2 objetos da classe Base B b é uma referência para um array de objetos da classe Base que só poderá ser efetivamente usada se for apontada para algum área onde haja objetos da classe Base devidamente instanciados D a0 é uma referência válida que aponta para um objeto da classe Base cujo construtor foi chamado com valor 20 e que está pronto para ser utilizado E a1 é uma referência válida para um objeto da classe Base cujo método set está sendo chamado tendo 30 como parâmetro PONTIFÍCIA UNIVERSIDADE CATÓLICA DO RIO GRANDE DO SUL Escola Politécnica Curso Ciência da Computação Disciplina Fundamentos de Programação Turma Data Nome G1 P1 P2 X SUBALUNO Substituição G2 Nota Prof Roland Teodorowitsch 33 1 Seu irmão mais novo está aprendendo programação e começou a fazer um programa para descobrir qual clube venceu mais vezes a Copa do Brasil de Futebol mas ele está com dificuldades e pediu a sua ajuda para concluir o programa Por enquanto ele fez um programa que obtém o nome dos campeões de 1989 até 2019 inclusive import javautilScanner public class CopaDoBrasil public static void mainString args Scanner in new ScannerSystemin String campeao for int i1989 i2019 i SystemoutprintCampeao de i campeao innextLine No entanto este programa contém apenas variáveis simples E será preciso trabalhar com arrays Portanto sua tarefa será reescrever este programa para que depois de ler o nome de todos os clubes que foram campeões em cada ano mostre qual foi o clube que mais vezes foi campeão Caso mais de um clube tenha sido campeão por mais vezes todos os clubes que foram campeões por mais vezes devem ser mostrados 25 2 Considere uma aplicação que precisa armazenar informações sobre as unidades federativas brasileiras Para cada unidade federativa é preciso armazenar nome sigla capital área em km² e população E também é preciso calcular a densidade populacional lembrese que a densidade computacional corresponde ao número de habitantes por km² e não se esqueça de prevenir a divisão por zero Crie uma classe para armazenar e gerenciar as informações das unidades federativas para ser usada nesta aplicação Para esta classe declare variáveis de instância defina um construtor sem parâmetros e um construtor com todos os parâmetros não calculados bem como métodos de acesso accessors métodos de alteração mutators e um método para impressão das informações sobre a unidade federativa 12 3 Crie uma classe para testar a classe criada na questão anterior Esta classe deve 1 criar um objeto da classe para unidades federativas com o construtor sem parâmetros definindo a seguir todos os atributos deste objeto usando os métodos de alteração mutators e imprimindo as informações com o método de impressão e 2 criar um objeto da para unidades federativas com o construtor que recebe todos os parâmetros imprimindo cada informação armazenada individualmente com os métodos de acesso accessors 25 4 Escrever um programa em Java que lê um valor inteiro maior do que 1 que corresponde à ordem de uma matriz quadrada de inteiros que deve ser alocada e cujos valores devem ser lidos O programa deve imprimir a soma dos valores que estão abaixo da diagonal secundária dessa matriz Por exemplo se a ordem for igual a 5 e a matriz contiver exatamente os seguintes valores j 0 1 2 3 4 i 0 9 9 9 9 7 1 9 9 7 9 1 2 9 9 7 1 1 3 9 7 1 1 1 4 7 1 1 1 1 o resultado deverá ser 10 Exercício 1 import javautilScanner public class CopaDoBrasil public static void mainString args Scanner scanner new ScannerSystemin String clubes new String31 int contagem new int31 for int i 0 i 31 i clubesi contagemi 0 for int i 1989 i 2019 i SystemoutprintCampeão de i String campeao scannernextLine int indice encontrarIndiceclubes campeao if indice 1 indice encontrarIndiceVazioclubes clubesindice campeao contagemindice int maxContagem encontrarMaxContagemcontagem Systemoutprintln Clubes com mais títulos for int i 0 i 31 i if contagemi maxContagem Systemoutprintlnclubesi scannerclose private static int encontrarIndiceString array String valor for int i 0 i arraylength i if arrayiequalsIgnoreCasevalor return i return 1 private static int encontrarIndiceVazioString array for int i 0 i arraylength i if arrayiisEmpty return i return 1 private static int encontrarMaxContagemint array int max 0 for int i 0 i arraylength i if arrayi max max arrayi return max EXPLICAÇÃO O código em Java solicita ao usuário o nome do clube campeão da Copa do Brasil para cada ano de 1989 a 2019 Em seguida ele conta quantos títulos cada clube possui e exibe os clubes com o maior número de títulos O programa armazena os nomes dos clubes em um array e utiliza métodos para encontrar o índice correto e atualizar as contagens Por fim ele mostra os clubes com mais títulos da Copa do Brasil Exercício 2 public class UnidadeFederativa private String nome private String sigla private String capital private double area private int populacao Construtor sem parâmetros public UnidadeFederativa Construtor com todos os parâmetros não calculados public UnidadeFederativaString nome String sigla String capital double area int populacao thisnome nome thissigla sigla thiscapital capital thisarea area thispopulacao populacao Métodos de acesso accessors public String getNome return nome public String getSigla return sigla public String getCapital return capital public double getArea return area public int getPopulacao return populacao Métodos de alteração mutators public void setNomeString nome thisnome nome public void setSiglaString sigla thissigla sigla public void setCapitalString capital thiscapital capital public void setAreadouble area thisarea area public void setPopulacaoint populacao thispopulacao populacao Método para cálculo da densidade populacional public double calcularDensidadePopulacional if area 0 return populacao area else return 0 Método para impressão das informações sobre a unidade federativa public void imprimirInformacoes SystemoutprintlnNome nome SystemoutprintlnSigla sigla SystemoutprintlnCapital capital SystemoutprintlnÁrea area km² SystemoutprintlnPopulação populacao SystemoutprintlnDensidade Populacional calcularDensidadePopulacional habkm² EXPLICAÇÃO A classe UnidadeFederativa é responsável por armazenar e gerenciar informações sobre as unidades federativas brasileiras como nome sigla capital área em km² e população Além disso a classe possui métodos para calcular a densidade populacional e imprimir as informações da unidade federativa Ela permite o acesso e a modificação dos atributos e fornece funcionalidades relevantes para a aplicação que utiliza essas informações Exercício 3 public class TesteUnidadeFederativa public static void mainString args Teste 1 Objeto com construtor sem parâmetros UnidadeFederativa uf1 new UnidadeFederativa uf1setNomeSão Paulo uf1setSiglaSP uf1setCapitalSão Paulo uf1setArea2482194 uf1setPopulacao46289333 uf1imprimirInformacoes Cálculo e impressão da densidade populacional para o teste 1 double densidadePopulacional1 uf1calcularDensidadePopulacional SystemoutprintlnDensidade Populacional densidadePopulacional1 habkm² Teste 2 Objeto com construtor que recebe todos os parâmetros UnidadeFederativa uf2 new UnidadeFederativaRio de Janeiro RJ Rio de Janeiro 437807 17366189 SystemoutprintlnNome uf2getNome SystemoutprintlnSigla uf2getSigla SystemoutprintlnCapital uf2getCapital SystemoutprintlnÁrea uf2getArea km² SystemoutprintlnPopulação uf2getPopulacao Cálculo e impressão da densidade populacional para o teste 2 double densidadePopulacional2 uf2calcularDensidadePopulacional SystemoutprintlnDensidade Populacional densidadePopulacional2 habkm² EXPLICAÇÃO A classe apresentada é um exemplo de teste para a classe UnidadeFederativa Ele cria objetos da classe um com o construtor sem parâmetros e outro com o construtor que recebe todos os parâmetros Em seguida são definidos os valores dos atributos e as informações são impressas O código demonstra como utilizar os métodos de acesso e alteração da classe além de calcular e exibir a densidade populacional para cada unidade federativa Esse exemplo ilustra o uso da classe e como manipular seus atributos de forma simples e intuitiva Exercício 4 import javautilScanner public class SomaAbaixoDiagonalSecundaria public static void mainString args Scanner input new ScannerSystemin Leitura da ordem da matriz SystemoutprintDigite a ordem da matriz quadrada int ordem inputnextInt if ordem 1 SystemoutprintlnA ordem da matriz deve ser maior do que 1 return Declaração e alocação da matriz int matriz new intordemordem Leitura dos valores da matriz SystemoutprintlnDigite os valores da matriz for int i 0 i ordem i for int j 0 j ordem j matrizij inputnextInt Cálculo da soma abaixo da diagonal secundária int soma 0 for int i 0 i ordem i for int j 0 j ordem j if i j ordem 1 soma matrizij Impressão da soma SystemoutprintlnA soma dos valores abaixo da diagonal secundária é soma EXPLICAÇÃO Este programa lê a ordem de uma matriz quadrada e seus valores Em seguida ele calcula a soma dos valores que estão abaixo da diagonal secundária da matriz ou seja onde a soma das coordenadas é maior do que o valor da ordem menos 1 Por fim imprime o resultado da soma encontrada Exercício 5 A afirmação INCORRETA é a Letra C A variável b foi declarada mas não foi inicializada com nenhum objeto ou array de objetos da classe Base Portanto não é possível utilizar b efetivamente até que ela seja atribuída a um objeto ou array de objetos da classe Base corretamente instanciados