Lista de Exercícios Resolvidos: Java | Python | VisuAlg | Portugol | C | C# | VB.NET | C++
Você está aqui: Java ::: Desafios e Lista de Exercícios Resolvidos ::: Programação Orientada a Objetos

Crie uma classe Televisao e uma classe ControleRemoto que pode controlar o volume e trocar os canais da televisão - Desafio de Programação Resolvido em Java

Quantidade de visualizações: 548 vezes
Pergunta/Tarefa:

Este exercício deve ser feito usando Programação Orientada a Objetos em Java.

Crie uma classe Televisao e uma classe ControleRemoto que pode controlar o volume e trocar os canais da televisão. O controle remoto permite:

1) aumentar ou diminuir a potência do volume de som em uma unidade de cada vez;
2) aumentar e diminuir o número do canal em uma unidade;
3) trocar para um canal indicado;
4) consultar o valor do volume de som e o canal selecionado.

O volume da TV deverá variar entre 0 (mudo) e 10 (máximo). Os canais deverão variar de 1 até 20. Exiba mensagens caso os valores informados caiam fora dessas faixas.

Seu código deverá mostrar um menu para as opções acima.

Sua saída deverá ser parecida com:

---------- OPÇÕES DO CONTROLE REMOTO ----------

1. Aumentar o Volume
2. Diminuir o Volume
3. Aumentar o Canal
4. Diminuir o Canal
5. Trocar Para o Canal Indicado
6. Consultar o Volume e Canal Selecionado
7. Sair
Sua opção: 6

O volume atual é: 5
O canal atual é: 1
Resposta/Solução:

Veja a resolução comentada deste exercício usando Java:

Código para a classe Televisao.java:

/*
  Esta é a classe Televisao. Ela contém duas variáveis de
  instância: volume e canal
*/

package estudos;

public class Televisao {
  private int volume;
  private int canal;

  // construtor padrão que define o volume como 5 e o canal 1
  public Televisao() {
    this.volume = 5;
    this.canal = 1;
......


Código para a classe ControleRemoto.java:

/*
  Esta é a classe ControleRemoto que permitirá controlar o volume
  e os canais da TV
 */
package estudos;

import java.util.Scanner;

public class ControleRemoto {

  Televisao tv; // uma referência a um objeto da classe Televisao

  // vamos usar um objeto da classe Scanner para entrada do usuário
  Scanner entrada = new Scanner(System.in);

  // construtor padrão da classe ControleRemoto
  public ControleRemoto() {
    // instanciamos um objeto da classe Televisao
    tv = new Televisao();
  }

  // mostra o menu de opções
  public void mostrarMenu() {
    // um laço infinito para mostrar as opções do menu
    while (true) {
      System.out.println("\n---------- OPÇÕES DO CONTROLE REMOTO ----------\n");
      System.out.println("1. Aumentar o Volume");
      System.out.println("2. Diminuir o Volume");
      System.out.println("3. Aumentar o Canal");
      System.out.println("4. Diminuir o Canal");
      System.out.println("5. Trocar Para o Canal Indicado");
      System.out.println("6. Consultar o Volume e Canal Selecionado");
      System.out.println("7. Sair");
      System.out.print("Sua opção: ");

      // lê a opção do usuário
      int opcao = Integer.parseInt(entrada.nextLine());

      // uma estrutura switch para tratar as opções do menu
      switch (opcao) {
        case 1: // aumenta o volume em uma unidade
          if(tv.getVolume() < 10){
            System.out.println("\nO volume da TV foi aumentado em uma unidade.\n");
            tv.setVolume(tv.getVolume() + 1);
          }
          else{
            System.out.println("\nO volume da TV já está no máximo.\n");
          }
          break;
          
        case 2: // diminui o volume em uma unidade
          if(tv.getVolume() > 0){
            System.out.println("\nO volume da TV foi diminuido em uma unidade.\n");
......


Código para a classe Principal.java:

package estudos;

public class Principal {
  public static void main(String[] args) {
    // cria um novo objeto da classe ControleRemoto
......


Link para compartilhar na Internet ou com seus amigos:

R ::: Fundamentos da Linguagem ::: Variáveis e Constantes

Quais são as palavras reservadas da linguagem R

Quantidade de visualizações: 1201 vezes
As palavras reservadas, ou palavras-chaves, de uma linguagem de programação são um conjunto de palavras e símbolos que possuem significado especial dentro da linguagem, em seu interpretador ou compilador. Estas palavras não podem ser usadas como identificadores de funções, nomes de variáveis, constantes, nomes de classes, etc.

A linguagem R, no momento que escrevo este texto, possui as seguintes palavras reservadas:

if              else         repeat
while           function     for
in              next         break
TRUE            FALSE        NULL
Inf             NaN          NA
NA_integer_     NA_real_     NA_complex_
NA_character_   ?


A qualquer momento nós podemos listas estas palavras reservadas, seja na janela de comandos ou em um script do R. Basta disparmos os comandos abaixo:

> ?reserved [ENTER]
> help(reserved) [ENTER]
......


Entre essas palavras reservadas, if, else, repeat, while, function, for, in, next e break são usadas para os testes condicionais, laços e funções definidas pelo usuário. São estas palavras que formam a estrutura básica da linguagem R.

As palavras TRUE e FALSE são as constantes lógicas em R.

NULL representa a ausência de um valor, ou um valor indefinido (ainda não houve atribuição).

A palavra reservada Inf significa "Infinity". Por exemplo, quando 1 é dividido por 0, enquanto NaN quer dizer "Not a Number" (não é um número). Um exemplo disso é quando dividimos 0 por 0.

NA significa "Not Available" e é usada para representar valores não informados.

A linguagem R é sensível a maiúsculas e minúsculas. Isso quer dizer que TRUE e True não são a mesma coisa. Enquanto TRUE é uma palavra reservada representando uma constante lógica, True pode ser usada como um nome de variável.


C++ ::: Dicas & Truques ::: Programação Orientada a Objetos

Como criar uma classe C++ completa, incluindo os arquivos de definição .h e implementação .cpp

Quantidade de visualizações: 27607 vezes
Esta dica o guiará passo-a-passo na criação de uma classe C++, incluindo os arquivos .h e .cpp. Para isso vamos usar o Dev-C++ (acreditamos que o procedimento é parecido com outros compiladores).

Vamos começar com o arquivo de definição. Com um projeto já iniciado no Dev-C++, vá em File -> New -> Source File. Quando perguntado se deseja adicionar o arquivo ao projeto existente, clique Yes.

Salve o arquivo com o nome de "pessoa.h" e inclua nele o seguinte código:

/*
  Código de definição: pessoa.h
*/

#ifndef PESSOA_H
#define PESSOA_H

#include <string>
using std::string;

class Pessoa{
  public:
......


Salve este código como pessoa.h no diretório de sua aplicação C++. Este é o arquivo de definição da classe. É nele que declaramos os membros públicos e privados, incluindo as assinaturas dos métodos da classe. Passemos agora ao arquivo de implementação. Novamente vá em File -> New -> Source File. Quando perguntado se deseja adicionar o arquivo ao projeto existente, clique Yes. Salve o novo arquivo como "pessoa.cpp" e inclua nele o seguinte conteúdo:

/*
  Código de implementação: pessoa.cpp
*/

#include "pessoa.h"

void Pessoa::setNome(string nome){
  this->nome = nome;
}

void Pessoa::setIdade(int idade){
......


Salve este código como pessoa.cpp no diretório de sua aplicação C++. Este é o arquivo de implementação dos métodos da classe Pessoa. Veja o uso da palavra-chave this quando queremos referenciar o objeto atual da classe e, é claro, evitar ambiguidade entre o nome das variáveis da classe e os nomes dos parâmetros dos métodos.

Hora de testar. Crie o arquivo principal da aplicação (aquele que contém o método main()):

#include <iostream>
#include "pessoa.h"

using namespace std;

int main(int argc, char *argv[])
{
  // declara um objeto da classe Pessoa
  Pessoa p;

  // informa o nome e idade da pessoa
  p.setNome("Osmar J. Silva");
  p.setIdade(27);

......


Funcionou tudo como planejado? Se funcionou, parabéns! Já fizemos um bom progresso na criação e uso de classes em C++.


Python ::: Desafios e Lista de Exercícios Resolvidos ::: Arrays e Matrix (Vetores e Matrizes)

Exercícios Resolvidos de Python - Criando dois vetores de inteiros de forma que a soma dos elementos individuais de cada vetor seja igual a 30

Quantidade de visualizações: 500 vezes
Pergunta/Tarefa:

Considere os seguintes vetores:

# dois vetores de 5 inteiros cada
a = [50, -2, 9, 5, 17]
b = [0 for x in range(5)]
Escreva um programa Python que preencha o segundo vetor de forma que a soma dos respectivos elementos individuais de cada vetor seja igual a 30.

Sua saída deverá ser parecida com:

Valores no vetor a: 50   -2   9   5   17   
Valores no vetor b: -20   32   21   25   13
Resposta/Solução:

Veja a resolução comentada deste exercício usando Python:

# método principal
def main():
  # dois vetores de 5 inteiros cada
  a = [50, -2, 9, 5, 17]
  b = [0 for x in range(5)]
    
  # vamos preencher o segundo vetor de forma que a soma dos
  # valores de seus elementos seja 30
  for i in range(len(a)):
    b[i] = 30 - a[i]
    
  # vamos mostrar o resultado
  print("Valores no vetor a: ", end="")
......



VB.NET ::: Fundamentos da Linguagem ::: Estruturas de Controle

Como usar a instrução Exit para abandonar a execução de um laço em VB.NET

Quantidade de visualizações: 9772 vezes
A instrução Exit pode ser usada para alterar o fluxo de controle de um programa. Há várias formas de instrução Exit, cada uma apropriada para sair (abandonar) a execução de diferentes tipos de blocos de códigos.

Esta dica mostra como usar a instrução Exit para abandonar a execução dos laços Do While...Loop, Do...Loop While, Do Until...Loop, Do...Loop Until, For...Next e While. Em cada um destes laços, a instrução Exit deve vir acompanhada do nome do laço. Veja um exemplo:

Dim numero As Integer = 1

While numero <= 100
  Console.WriteLine(numero)
  numero += 1
......


Execute este código e veja que a contagem pára no 20. Vejamos agora um exemplo do uso da instrução Exit com um laço For...Next:

For valor As Integer = 3 To 100 Step 3
  Console.WriteLine(valor)
......


Execute e veja como o laço é interrompido quando o valor da variável valor se torna maior que 20. Para finalizar, lembre-se de que a instrução Exit abandona a execução do laço no local exata em que esta é inserida. Tenha isso em mente para evitar efeitos indesejados em seus códigos.


Revit C# ::: Dicas & Truques ::: Eixos - Grids

Como criar eixos no Revit via programação usando a função Create() da classe Grid da Revit C# API

Quantidade de visualizações: 83 vezes
Os eixos, ou grids, são linhas que auxiliam na construção de um projeto, ou seja, uma espécie de malha de linhas. Eles são mais utilizados quando se trabalha com elementos estruturais, para a locação de colunas e pilares.

No Revit, os eixos podem ser verticais, horizontais, inclinados e até em forma de arcos. Para criá-los, vá na aba Arquitetura, seção Dados e localize o item Eixo (ou digite GR).

Via programação nós podemos criar um eixo no Revit usando a função Create() da classe Grid da Revit C# API. Neste exemplo mostrarei, em detalhes, como isso pode ser feito.

O primeiro passo é obter uma referência ao documento UI atual usando this.ActiveUIDocument. Após isso acessar o documento usando uidoc.Document. As coordenadas geométricas de início e fim do eixo são criadas como objetos da classe XYZ. Então, de posse das coordenadas, nós criamos um objeto Line usando a função Line.CreateBound().

Para finalizar nós usamos a função Grid.Create() para desenhar o eixo na área de desenho do Revit. Note como passamos o objeto Line e uma referência ao documento atual para esta função. Veja ainda o uso de uma Transaction para abrir uma transação do Revit, criar o elemento e fechá-la em seguida.

Este exemplo criará um eixo com o LevelId -1, ou seja, no primeiro nível do documento. Em outras dicas dessa seção eu mostro como definir o nível para o grid recém-criado.

Veja o código Revit C# API completo para o exemplo:

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using Autodesk.Revit.DB;
using Autodesk.Revit.DB.Architecture;
using Autodesk.Revit.DB.Structure;
using Autodesk.Revit.UI;
using Autodesk.Revit.UI.Selection;

namespace Estudos {
  [Autodesk.Revit.Attributes.Transaction(Autodesk.Revit.Attributes.
    TransactionMode.Manual)]
  [Autodesk.Revit.DB.Macros.AddInId("ED8EC6C4-9489-48F7-B04E-B45B5D1BEB12")]
  public partial class ThisApplication {
    private void Module_Startup(object sender, EventArgs e) {
      // primeiro obtemos uma referência ao documento atual
      UIDocument uidoc = this.ActiveUIDocument;
      Document doc = uidoc.Document;
             
      // criamos a linha geométrica para posicionar o eixo
      // não se esqueça de converter metros para pés      
      XYZ inicio = new XYZ(0, -100, 0);
      XYZ final = new XYZ(0, 100, 0);
......


Ao executar este código Revit C# API teremos o seguinte resultado:

O novo eixo foi criado com o ID: 49827


Veja mais Dicas e truques de Revit C#

Dicas e truques de outras linguagens

Quem Somos

Osmar J. Silva
Programador Freelancer
WhatsApp +55 (062) 98553-6711

Goiânia-GO
Programador Freelancer - Full Stack Developer, Professional Java Developer, PHP, C/C++, Python Programmer, wxWidgets Professional C++ Programmer, Freelance Programmer. Formado em Ciência da Computação pela UNIP (Universidade Paulista Campus Goiânia) e cursando Engenharia Civil pela PUC-Goiás. Possuo conhecimentos avançados de Java, Python, JavaScript, C, C++, PHP, C#, VB.NET, Delphi, Android, Perl, e várias tecnologias que envolvem o desenvolvimento web, desktop, front-end e back-end. Atuo há mais de 20 anos como programador freelancer, atendendo clientes no Brasil, Portugal, Argentina e vários outros paises.
Entre em contato comigo para, juntos, vermos em que posso contribuir para resolver ou agilizar o desenvolvimento de seus códigos.
José de Angelis
Programador Freelancer
WhatsApp +55 (062) 98243-1195

Goiânia-GO
Programador Freelancer - Formado em Sistemas de Informação pela Faculdade Delta, Pós graduado em Engenharia de Software (PUC MINAS), Pós graduado Marketing Digital (IGTI) com ênfase em Growth Hacking. Mais de 15 anos de experiência em programação Web. Marketing Digital focado em desempenho, desenvolvimento de estratégia competitiva, analise de concorrência, SEO, webvitals, e Adwords, Métricas de retorno. Especialista Google Certificado desde 2011 Possui domínio nas linguagens PHP, C#, JavaScript, MySQL e frameworks Laravel, jQuery, flutter. Atualmente aluno de mestrado em Ciência da Computação (UFG)
Não basta ter um site. É necessário ter um site que é localizado e converte usuários em clientes. Se sua página não faz isso, Fale comigo e vamos fazer uma analise e conseguir resultados mais satisfatórios..

Linguagens Mais Populares

1º lugar: Java
2º lugar: Python
3º lugar: C#
4º lugar: PHP
5º lugar: Delphi
6º lugar: C
7º lugar: JavaScript
8º lugar: C++
9º lugar: VB.NET
10º lugar: Ruby



© 2024 Arquivo de Códigos - Todos os direitos reservados
Neste momento há 13 usuários muito felizes estudando em nosso site.