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

Programação Orientada a Objetos em C++ - Como controlar o acesso a membros de uma classe C++ usando o modificar public

Quantidade de visualizações: 8267 vezes
Membros de uma classe são suas funções e variáveis. A visibilidade de tais membros pode ser controlada, ou seja, algumas funções e variáveis podem ser ocultadas do mundo externo. Este é o princípio de encapsulamento da programação orientada a objetos.

O modificador public define que os membros de uma classe estarão acessíveis a qualquer função fora da classe. Veja um exemplo:

#include <iostream>

using namespace std;

class Cliente{
public:
  char *nome;
};

int main(int argc, char *argv[])
{
  // Cria uma instância da classe Cliente
  Cliente *cliente = new Cliente();

  // Define o nome do cliente
  cliente->nome = "Osmar J. Silva";

  // Obtém o nome do cliente
  cout << "Nome do cliente: " << cliente->nome << "\n\n";

  system("PAUSE");
  return EXIT_SUCCESS;
}

Como o atributo nome foi declarado na seção public, o código da função main possui acesso a ele sem a necessidade de métodos acessórios (get) ou mutatórios (set).

Quando usamos o modificador public antes do nome de uma classe base (durante a herança), estamos definindo que os membros public e protected da classe base serão public e protected na classe derivada.

O acesso padrão (sem modificador) dos membros de uma classe é private. Em uniões (union) e estruturas (structure), o acesso padrão é public.

O acesso padrão de uma classe base (durante a herança) é private para classes e public para estruturas. Uniões não podem possuir classes bases.


VB.NET ::: Dicas & Truques ::: Arrays e Matrix (Vetores e Matrizes)

Como copiar todos os elementos de um vetor para outro em VB.NET usando o método CopyTo() da classe Array

Quantidade de visualizações: 7361 vezes
Nesta dica eu mostro como podemos usar o método CopyTo() da classe Array do VB.NET para copiar todos os elementos de um array para um outro array.

Veja o código completo para o exemplo:

Imports System

Module Program
  Sub Main(args As String())
    ' cria um array de inteiros
    Dim valores() As Integer = {1, 2, 3, 4, 5}

    ' exibe os valores do primeiro array
    For Each valor As Integer In valores
      Console.WriteLine(valor)
    Next

    ' cria um segundo array e copia os elementos
    ' do primeiro para o segundo
    Dim valores2() As Integer = {6, 7, 8, 9, 10, 15, 20}
    valores.CopyTo(valores2, 0)
    Console.WriteLine()

    ' exibe os valores do segundo array
    For Each valor As Integer In valores2
      Console.WriteLine(valor)
    Next

    Console.WriteLine("\nPressione qualquer tecla para sair...")
    ' pausa o programa
    Console.ReadKey()
  End Sub
End Module

Ao executar este código VB.NET nós teremos o seguinte resultado:

1
2
3
4
5

1
2
3
4
5
15
20


Revit C# ::: Dicas & Truques ::: Colunas e Pilares

Como rotacionar colunas e pilares no Revit via programação usando a função RotateElement() da classe ElementTransformUtils da Revit C# API

Quantidade de visualizações: 386 vezes
Nesta dica mostrarei como podemos usar a função RotateElement() da classe ElementTransformUtils da Revit C# API para rotacionar uma coluna ou pilar no Revit, tudo isso via programação.

Essa dica é muito útil para programadores Revit C#, pois traz as técnicas necessárias para selecionar um único elemento na área de desenho do Revit, assim como obter sua caixa delimitadora (BoundingBox), seu ponto geométrico central e, o mais importante, fazer a rotação do elemento em seus eixos.

O primeiro passo é pedir para o usuário selecionar o pilar ou a coluna usando a função PickObject() da classe Selection, que retorna uma Reference. Após a seleção do elemento nós usamos a função GetElement() da classe Document para retornar o elemento como uma variável FamilyInstance, ou seja, uma instância de família do Revit.

De posse da instância de família nós usamos a função get_BoundingBox() para obter e retornar um objeto da classe BoundingBoxXYZ. É esse objeto que usamos para obter o ponto máximo, o ponto mínimo e o ponto geométrico central da coluna ou pilar.

O passo final é usar a função RotateElement() da classe ElementTransformUtils para rotacionar a coluna ou pilar de acordo com o ângulo de rotação desejado. Note que fiz a conversão de ângulos em graus para ângulos em radianos antes de efetuar a rotação.

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

using System;
using Autodesk.Revit.UI;
using Autodesk.Revit.DB;
using Autodesk.Revit.DB.Structure;
using Autodesk.Revit.UI.Selection;
using System.Collections.Generic;
using Autodesk.Revit.DB.Architecture;
using System.Linq;
 
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) {
      // vamos obter uma referência ao Document ativo
      Document doc = this.ActiveUIDocument.Document;
      UIDocument uidoc = this.ActiveUIDocument; 
      
      // agora mostramos uma mensagem para o usuário selecionar uma
      // coluna ou pilar
      TaskDialog.Show("Aviso", "Selecione uma coluna ou pilar");
        
      // obtemos uma referência ao objeto Selection do
      // UIDocument ativo
      Selection selecao = uidoc.Selection;
      
      // e finalmente esperamos que o usuário selecione o elemento
      Reference selecionado = selecao.PickObject(ObjectType.Element,
        "Selecione uma coluna ou pilar");
      
      // agora testamos se o usuário realmente selecionou um
      // elemento
      if (selecionado != null) {
        // vamos obter o elemento selecionado a partir da
        // referência
        FamilyInstance coluna = uidoc.Document.GetElement(selecionado) 
          as FamilyInstance;
        // vamos obter o elemento BoundingBoxXYZ
        BoundingBoxXYZ bounding = coluna.get_BoundingBox(null);
         
        // vamos obter as informações da BoundingBoxXYZ
        // primeiro o ponto mínimo (canto esquerdo inferior e
        // a parte de trás da caixa delimitadora)
        XYZ pontoMinimo = bounding.Min;
        // agora o ponto máximo (canto direito superior e
        // a parte da frente da caixa delimitadora)
        XYZ pontoMaximo = bounding.Max;
        
        // agora obtemos o ponto central da coluna         
        XYZ centro = (pontoMaximo + pontoMinimo) * 0.5;
        // construímos a linha que servirá de eixo de rotação
        Line eixos = Line.CreateBound(centro, centro + XYZ.BasisZ);
        // definimos o ângulo de rotação em graus        
        double angulo_rotacao_graus = 45;
        // convertemos para radianos
        double angulo_rotacao_radianos = angulo_rotacao_graus * (Math.PI / 180);        
        
        // iniciamos a transação
        Transaction transacao = new Transaction(doc);
        transacao.Start("Como rotacionar colunas e pilares no Revit");
        
        // rotacionamos a coluna ou pilar
        ElementTransformUtils.RotateElement(doc, coluna.Id, eixos,
          angulo_rotacao_radianos);
        
        // fazemos o commit da transação
        transacao.Commit();      
     
        // e mostramos o resultado
        TaskDialog.Show("Aviso", "A coluna foi rotacionada com sucesso.");
      }
    }
      
    private void Module_Shutdown(object sender, EventArgs e) {
      // para fazer alguma limpeza de memória ou algo assim
    }
 
    #region Revit Macros generated code
    private void InternalStartup() {
      this.Startup += new System.EventHandler(Module_Startup);
      this.Shutdown += new System.EventHandler(Module_Shutdown);
    }
    #endregion
  }
}



LISP ::: Desafios e Lista de Exercícios Resolvidos ::: Lisp Básico

Exercícios Resolvidos de Lisp - Como somar dois números em Lisp - Escreva um programa Lisp que leia dois números e mostre a sua soma

Quantidade de visualizações: 1652 vezes
Exercício Resolvido de Lisp - Como somar dois números em Lisp - Escreva um programa Lisp que leia dois números e mostre a sua soma

Pergunta/Tarefa:

Escreva um programa Common Lisp que solicita ao usuário dois números inteiros e mostre a sua soma.

Sua saída deverá ser parecida com:

Informe o primeiro valor: 2
Informe o segundo valor: 8
A soma é 10
Resposta/Solução:

Veja a resolução completa para o exercício em Common Lisp usando o compilador Steel Bank Common Lisp (SBCL), comentada linha a linha:

; Vamos definir as variáveis que vamos
; usar no programa
(defvar n1)
(defvar n2)
(defvar soma)

; Este o programa principal
(defun Soma()
  ; Vamos ler o primeiro valor
  (princ "Informe o primeiro valor: ")
  ; talvez o seu compilador não precise disso
  (force-output)
  (setq n1 (read))
  ; Vamos ler o segundo valor
  (princ "Informe o segundo valor: ")
  ; talvez o seu compilador não precise disso
  (force-output)
  (setq n2 (read))
  
  ; Agora vamos efetuar a soma dos dois números
  (setq soma (+ n1 n2))
  
  ; E mostramos o resultado
  (format t "A soma é ~D" soma)
)

; Auto-executa a função Soma()
(Soma)



Java ::: Java Swing - Gerenciadores de Layout ::: GridBagLayout

Como adicionar espaço entre o GridBagLayout do Java Swing e as bordas da janela JFrame usando o método setBorder()

Quantidade de visualizações: 11379 vezes
Se o GridBagLayout for o gerenciador de layout principal da janela, pode ser interessante adicionar algum espaço (padding) entre ele e as bordas da janela JFrame ou JDialog. Isso pode ser feito obtendo-se uma referência ao painel de conteúdo (ContentPane) da JFrame e adicionando uma borda EmptyBorder. Veja como isso é feito no trecho de código abaixo:

package arquivodecodigos;

import javax.swing.*;
import javax.swing.border.*;
import java.awt.*;

public class Estudos extends JFrame{
  public Estudos(){
    super("Como usar a classe GridBagLayout");

    // define o layout
    setLayout(new GridBagLayout());
    
    // define uma borda para aumentar o espaço
    // entre as bordas da janela e o gerenciador
    // de layout
    ((JComponent)getContentPane()).setBorder(
       new EmptyBorder(10, 10, 10, 10));

    // cria o GridBagConstraints
    GridBagConstraints gbc = new GridBagConstraints();

    // controla o espaço entre os componentes
    // e as linhas do GridBagLayout.
    // aqui nós definimos 5 pixels para os
    // lados de cima, esquerda, inferior e direita
    gbc.insets = new Insets(5, 5, 5, 5);

    // adiciona componentes à janela
    gbc.gridy = 0; // linha
    gbc.gridx = 0; // coluna
    add(new JButton("Botão 1"), gbc);

    gbc.gridy = 0; // linha
    gbc.gridx = 1; // coluna
    add(new JButton("Botão 2"), gbc);

    gbc.gridy = 0; // linha
    gbc.gridx = 2; // coluna
    add(new JButton("Botão 3"), gbc);

    gbc.gridy = 1; // linha
    gbc.gridx = 0; // coluna
    add(new JButton("Botão 4"), gbc);

    gbc.gridy = 1; // linha
    gbc.gridx = 1; // coluna
    add(new JButton("Botão 5"), gbc);

    gbc.gridy = 1; // linha
    gbc.gridx = 2; // coluna
    add(new JButton("Botão 6"), gbc);
    
    //setSize(350, 150);
    pack(); // ajusta o tamanho da janela ao
    // dos componentes
    setVisible(true);    
  }

  public static void main(String args[]){
    Estudos app = new Estudos();
    app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  }
}

Ao executar este código Java Swing nós teremos o seguinte resultado:




Python ::: Dicas & Truques ::: Matemática e Estatística

Como calcular MDC em Python - Python para matemática

Quantidade de visualizações: 12702 vezes
Python para matemática - Como calcular o MDC (Máximo Divisor Comum) em Python

Atualmente a definição de Máximo Divisor Comum (MDC) pode ser assim formalizada:

Sejam a, b e c números inteiros não nulos, dizemos que c é um divisor comum de a e b se c divide a (escrevemos c|a) e c divide b (c|b). Chamaremos D(a,b) o conjunto de todos os divisores comum de a e b.

O trecho de código abaixo mostra como calcular o MDC de dois números informados:

# função que permite calcular o MDC
def MDC(a, b):
  while(b != 0):
    resto = a % b
    a = b
    b = resto
 
  return a

# função principal do programa
def main():
  print("Este programa permite calcular o MDC\n")
  x = int(input("Informe o primeiro valor: "))
  y = int(input("Informe o segundo valor: "))
  
  print("\nO Máximo Divisor Comum de", x, "e", y, "é", MDC(x, y))
  
if __name__== "__main__":
  main()

Ao executar este código Python nós teremos o seguinte resultado:

Este programa permite calcular o MDC
Informe o primeiro número: 12
Informe o segundo número: 9
O Máximo Divisor Comum de 12 e 9 é 3


Java ::: Coleções (Collections) ::: ArrayList

Como rotacionar os elementos de uma ArrayList do Java para frente ou para trás usando o método rotate()

Quantidade de visualizações: 11283 vezes
Nesta dica mostrarei como podemos usar o método rotate() da classe Collections da linguagem Java para rotacionar os elementos de uma ArrayList. Veja sua assinatura:

void rotate(List<?> list, int distance)


Este método faz com que um elemento na posição i seja movido para a posição (distance + i) % list.size().

Se você quiser inverter a ordem da rotação, forneça um valor negativo para o argumento distance.

Veja o código completo para o exemplo:

package estudos;

import java.util.ArrayList;
import java.util.Collections;

public class Estudos{
  public static void main(String[] args){
    // cria uma ArrayList que conterá strings
    ArrayList<String> nomes = new ArrayList<String>();
    
    // adiciona itens na lista
    nomes.add("Carlos");
    nomes.add("Maria");
    nomes.add("Fernanda");
    nomes.add("Osmar");    
	
    // exibe os elementos da ArrayList
    System.out.println("Antes da rotação:\n");
    for(int i = 0; i < nomes.size(); i++)
      System.out.println(nomes.get(i));    
 
    // Vamos rotacionar os elementos uma posição
    Collections.rotate(nomes, 1); 

    // exibe os elementos da ArrayList
    System.out.println("\nDepois da rotação:\n");
    for(int i = 0; i < nomes.size(); i++)
      System.out.println(nomes.get(i));

    System.exit(0);
  }
}

Ao executar este código Java nós teremos o seguinte resultado:

Antes da rotação:

Carlos
Maria
Fernanda
Osmar

Depois da rotação:

Osmar
Carlos
Maria
Fernanda


VisuAlg ::: Desafios e Lista de Exercícios Resolvidos ::: VisuAlg Básico

Exercícios Resolvidos de VisuAlg - Escreva um programa VisuAlg que pergunte a velocidade de um carro. Caso ultrapasse 80km/h, exiba uma mensagem dizendo que

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

Escreva um programa VisuAlg que pergunte a velocidade de um carro. Caso ultrapasse 80km/h, exiba uma mensagem dizendo que o usuário foi multado. Nesse caso, exiba o valor da multa, cobrando R$ 5,00 por cada quilômetro acima da velocidade permitida.

Sua saída deve ser parecida com:

Velocidade do carro: 85
Você foi multado.
A multa a ser paga é: 25.0

Velocidade do carro: 75
Você não foi multado

Velocidade do carro: 110
Você foi multado.
A multa a ser paga é: 150.0
Resposta/Solução:

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

algoritmo "Calcular a velocidade de um carro em VisuAlg"

var
  // variáveis usadas na resolução do problema
  velocidade, multa: real

// função principal do programa
inicio
  // vamos pedir para o usuário informar a velocidade
  // do carro
  escreva("Informe a velocidade do carro: ")
  leia(velocidade)

  // vamos verificar se o usuário foi multado
  se (velocidade > 80) entao
    escreval("Você foi multado.")
    // vamos calcular a multa
    multa <- (velocidade - 80) * 5.0
    escreval("A multa a ser paga é: ", multa)
  senao
    escreval("Você não foi multado")
  fimse

  escreval()

fimalgoritmo



C ::: C para Engenharia ::: Física - Mecânica

Como calcular a energia cinética de um corpo dado sua massa e sua velocidade usando a linguagem C

Quantidade de visualizações: 1502 vezes
Energia Cinética é a forma de energia relacionada aos corpos em movimento e é diretamente proporcional ao quadrado da velocidade do corpo. Sendo uma grandeza física escalar, a energia cinética possui como unidade de medida, de acordo com as unidades do SI (Sistema Internacional de Medidas), o joule.

A energia cinética é a capacidade de algum corpo em movimento realizar trabalho, modificando o estado de movimento dos corpos ao seu redor ou deformando-os. Quanto maior é a velocidade e a massa do corpo, maior é a sua capacidade de realizar trabalho quando estiver em movimento. De forma análoga, podemos pensar que um corpo que apresenta uma grande energia cinética necessita de uma grande quantidade de energia para cessar o seu movimento.

A fórmula para obtenção da Energia Cinética de um corpo, quando temos a sua massa e a sua velocidade é:

\[ E_c = \frac{\text{m} \cdot v^2}{\text{2}} \]

Onde:

Ec ? energia cinética (em joule, J).

m ? massa do corpo (em kg).

v ? velocidade do corpo (em m/s).

É comum, também, encontrarmos essa fórmula escrita da seguinte forma:

\[ E_c = \frac{1}{2} \text{m} \cdot v^2 \]

É importante observarmos que, caso um corpo se encontre em repouso, a energia cinética a ele associada é nula, ou seja, zero. Além disso, a energia cinética depende da velocidade desse corpo ao quadrado. Sendo assim, ao duplicarmos a velocidade de um corpo, sua energia cinética aumenta quatro vezes e, ao triplicá-la, a energia cinética desse corpo fica nove vezes maior.

Vamos ver um exemplo agora? Observe o seguinte enunciado:

1) Um ciclista e sua bicicleta possuem uma massa total de 100kg, e uma velocidade de 54km/h. Calcule sua energia cinética.

O exercício já nos dá a massa total em kg, mas precisamos converter km/h em m/s antes de realizar o cálculo da energia cinética. Fique atento(a). Veja o código C completo que efetua este cálculo e exibe a energia cinética resultante:

#include <stdio.h>
#include <stdlib.h>
#include <math.h> 
     
int main(int argc, char *argv[]){
  // a massa total
  float massa = 100; // em kg
  // velocidade (em m/s)
  float velocidade = 54 / 3.6; // converti de km/h para m/s
  
  // agora calculamos a energia cinética
  float energia_cinetica = (massa * pow(velocidade, 2)) / 2;
  
  // mostramos o resultado
  printf("A energia cinética é: %fJ",
    energia_cinetica);
			  
  printf("\n\n");
  system("PAUSE");
  return 0;
}

Ao executar este código C nós teremos o seguinte resultado:

A energia cinética é: 11250.000000J


JavaScript ::: Dicas & Truques ::: Arrays e Matrix (Vetores e Matrizes)

Como testar se ao menos um elemento de um array satisfaz uma condição em JavaScript usando a função some()

Quantidade de visualizações: 2149 vezes
O método some(), adicionado à linguagem JavaScript por meio do ECMAScript 5 (JavaScript 5, ECMAScript 2009, ES5) pode ser usado quando queremos verificar se um ou mais elementos de um vetor satisfaz uma determinada condição.

Este método nos permite fornecer uma função de callback que será chamada para cada um dos elementos do vetor. E o retorno do método some() é um valor true se ao menos um dos elementos passar no teste e false em caso contrário. Tão logo o valor true seja satisfeito, a função some() encerra sua execução imediatamente.

Veja um exemplo no qual testamos se AO MENOS um elemento do array é maior que 70:

<script type="text/javascript">
  function testar(valor, indice, vetor){
    if(valor > 70){
      return true;
    }
  }  

  var valores = new Array(21, 50, 30, 71, 12, 3);
  // vamos verificar se AO MENOS um valor é maior que 70
  var res = valores.some(testar);  
  window.alert("Alguns valores passaram no teste: " + res);
</script>

Aqui o resultado será true, pois o valor 71 passou no teste. É importante observar que, assim que a função de callback retorna true pela primeira vez, o método some() já abandona sua execução.

Uma função passada para o método some() pode conter os seguintes argumentos (nessa mesma ordem):

a) O valor do item;
b) O índice do item (opcional);
c) O vetor a partir do qual o método some() está sendo chamado (opcional).

Como última observação, o método some() não modifica o array original.

Carregar Publicações Anteriores


Nossas 20 dicas & truques de programação mais populares

Você também poderá gostar das dicas e truques de programação abaixo

Nossas 20 dicas & truques de programação mais recentes

Últimos Projetos e Códigos Fonte Liberados Para Apoiadores do Site

Últimos Exercícios Resolvidos

E-Books em PDF

E-Book 350 Exercícios Resolvidos de Java - PDF com 500 páginas
Domine lógica de programação e a linguagem Java com o nosso E-Book 350 Exercícios Exercícios de Java, para você estudar onde e quando quiser.

Este e-book contém exercícios resolvidos abrangendo os tópicos: Java básico, matemática e estatística, programação dinâmica, strings e caracteres, entrada e saída, estruturas condicionais, vetores e matrizes, funções, laços, recursividade, internet, arquivos e diretórios, programação orientada a objetos e muito mais.
Ver Conteúdo do E-book
E-Book 650 Dicas, Truques e Exercícios Resolvidos de Python - PDF com 1.200 páginas
Domine lógica de programação e a linguagem Python com o nosso E-Book 650 Dicas, Truques e Exercícios Exercícios de Python, para você estudar onde e quando quiser.

Este e-book contém dicas, truques e exercícios resolvidos abrangendo os tópicos: Python básico, matemática e estatística, banco de dados, programação dinâmica, strings e caracteres, entrada e saída, estruturas condicionais, vetores e matrizes, funções, laços, recursividade, internet, arquivos e diretórios, programação orientada a objetos e muito mais.
Ver Conteúdo do E-book

Linguagens Mais Populares

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



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