Lista de Exercícios Resolvidos: Java | Python | VisuAlg | Portugol | C | C# | VB.NET | C++
Você está aqui: C++ ::: Fundamentos da Linguagem ::: Tipos de Dados

Apostila C++ para iniciantes - Como usar o tipo de dados short ou short int da linguagem C++

Quantidade de visualizações: 13315 vezes
O tipo de dados short (também chamado de short int) da linguagem C++ é uma variação do tipo int e geralmente possui a metade da capacidade de armazenamento deste. Nós o usamos quando queremos representar números inteiros, ou seja, sem partes fracionárias, que não sejam grandes o suficiente para exigir variáveis do tipo int. Veja um trecho de código demonstrando seu uso (note que estes estudos foram feitos no Windows XP - 32 bits - usando Dev-C++):

#include <iostream>

using namespace std;

int main(int argc, char *argv[]){
  // declara uma variável do tipo short
  short idade = 45;

......


Veja que a maioria dos compiladores C++ não faz distinção entre os tipos short e short int. A capacidade de armazenamento do tipo short depende da arquitetura na qual o programa está sendo executado. Uma forma muito comum de descobrir esta capacidade é usar os símbolos SHRT_MIN e SHRT_MAX, definidos no header climits (limits.h). Veja:

#include <iostream>

using namespace std;

int main(int argc, char *argv[]){
  cout << "Valor mínimo: " << SHRT_MIN << "\n";
......


Ao executar este programa você terá um resultado parecido com:

Valor mínimo: -32768
......


Veja que o tipo short aceita valores positivos e negativos. Tudo que você tem a fazer é tomar todo o cuidado para que os valores atribuidos a variáveis deste tipo não ultrapassem a faixa permitida. Veja um trecho de código que provoca o que chamamos de transbordamento (overflow):

#include <iostream>

using namespace std;

int main(int argc, char *argv[]){
  short soma = SHRT_MAX + 2;

  cout << "Resultado: " << soma << "\n";
......


Este programa exibirá o seguinte resultado:

Resultado: -32767
......


Note que este não é o resultado esperado, visto que SHRT_MAX + 2 deveria retornar:

32767 + 2 = 32769
......


Porém, como o valor máximo que pode ser armazenado em um short é 32767, o procedimento adotado pelo compilador foi tornar o número negativo e subtrair 1. É claro que, se você testar este código em arquiteturas diferentes o resultado poderá ser diferente do exemplificado aqui.

Em termos de bytes, é comum o tipo short ser armazenado em 2 bytes, o que resulta em 16 bits (um byte é formado por 8 bits, lembra?). Veja um trecho de código que mostra como usar o operador sizeof() para determinar a quantidade de bytes necessários para armazenar um variável do tipo short:

#include <iostream>

using namespace std;

int main(int argc, char *argv[]){
  cout << "Tamanho de um short: " << sizeof(short)
......


O resultado da execução deste código será algo como:

Tamanho de um short: 2 bytes
......


Link para compartilhar na Internet ou com seus amigos:

Java ::: Pacote java.lang ::: String

Java para iniciantes - Como usar o método replace() da classe String para efetuar a substituição de caracteres em uma string

Quantidade de visualizações: 9264 vezes
Em algumas situações gostaríamos de substituir caracteres (não substrings) em uma string. Isso pode ser feito por meio do método replace() da classe String. Veja sua assinatura:

public String replace(char oldChar, char newChar)
O parâmetro oldChar representa o caractere que será substituído pelo valor no parâmetro newChar. Note que todas as ocorrências de oldChar serão substituídas por newChar. O resultado será um novo objeto String com as substituições aplicadas. Se não houver substituições a string atual é retornada.

Veja um trecho de código no qual substituímos todas as letras "a" por "e" e retornamos uma nova string com as substituições:

public class Estudos {
  public static void main(String[] args) {
    String frase = "Programar em Java é muito bom";
    System.out.println("Frase original: " + frase);
    
......


Após a execução deste código teremos o seguinte resultado:

Frase original: Programar em Java é muito bom
Depois da substituição: Progremer em Jeve é muito bom



Delphi ::: Dicas & Truques ::: Recursão (Recursividade)

Como usar recursividade em Delphi - Como usar recursão ou funções recursivas em Delphi

Quantidade de visualizações: 14871 vezes
Recursão ou recursividade é a habilidade que uma procedure ou function (função) possui de chamar a si própria uma vez, várias, indefinidamente ou até que a solução do problema a ser resolvido seja encontrada. Assim, podemos definir uma função recursiva (aqui uma procedure recursiva) em Delphi da seguinte forma (atenção: não execute este código):

// uma procedure recursiva
procedure Recursiva;
begin
  // chama a si própria
  Recursiva;
end;

// vamos chamar a procedure pela primeira vez
......


O fato de eu pedir para que você não execute o código é que, uma vez clicado o botão, a procedure Recursiva será chamada e continuará chamando a si mesma até que a pilha do sistema estoure, ou seja, como funções recursivas são implementadas usando a pilha do sistema operacional e não na área de memória destinada a cada aplicativo o resultado será um travamento do programa, e, caso não estejamos com sorte, um travamento do sistema operacional. Sabedor do risco, clique no botão para ver o resultado você mesmo.

O que devemos saber a respeito das funções recursivas é que estas precisam saber o ponto de parada, de forma a evitar chamadas infinitas. Como exemplo, veja uma procedure recursiva que conta de 0 até 10. Note como cada chamada verifica se já é hora de interromper a cadeia:

// uma procedure recursiva que conta de 0 até 10
procedure Contar(valor: Integer);
begin
  // vamos exibir o valor atual
  ShowMessage(IntToStr(valor));

  // é hora de parar?
  if valor = 10 then
    ShowMessage('Terminei')
  else
    begin
      // chama a si própria (note que aumentamos o valor atual em 1)
......


Execute este código e veja o resultado. Observe que a cada chamada recursiva nós incrementamos a variável de controle. Ela é a responsável por evitar que chamadas infinitas sejam feitas.

Para fins de compatibilidade, esta dica foi escrita usando Delphi 2009.


Revit C# ::: Dicas & Truques ::: Selection, Seleção

Como pedir para o usuário selecionar um ou mais elementos no Revit usando a função PickElementsByRectangle() do objeto Selection da Revit C# API

Quantidade de visualizações: 119 vezes
A Seleção por Retângulo (ou Retângulo de Seleção) do Revit funciona da seguinte forma:

a) Desenhe uma caixa de seleção ao colocar o cursor em um dos lados do elemento a ser selecionado e arraste-o na diagonal para formar um limite retangular.

b) Para selecionar somente os elementos que estejam completamente dentro do limite da caixa de seleção, arraste o cursor da esquerda para a direita.

c) Para selecionar quaisquer elementos que estejam completamente ou parcialmente dentro do limite da caixa de seleção, arraste o cursor da direita para a esquerda.

Via código C# usando a API do Revit, nós podemos pedir para o usuário selecionar elementos usando o retângulo de seleção por meio da função PickElementsByRectangle() do objeto Selection e retornar os elementos selecionados em uma IList.

O primeiro passo é obter uma referência ao documento atual UIDocument a partir de uma chamada a this.ActiveUIDocument. Em seguida nós obtemos o objeto Selection a partir do UIDocument e chamamos a sua função PickElementsByRectangle(). Finalmente, de posse da lista IList de elementos selecionados nós só precisamos acessar sua propriedade Count para verificar a quantidade de elementos que o usuário selecionou.

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

using System;
using Autodesk.Revit.UI;
using Autodesk.Revit.DB;
using Autodesk.Revit.UI.Selection;
using System.Collections.Generic;
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 UIDocument ativo
      UIDocument uidoc = this.ActiveUIDocument;
      
      // agora mostramos uma mensagem para o usuário selecionar um
      // elemento
      TaskDialog.Show("Aviso", "Selecione um ou mais elementos");
      
      // obtemos uma referência ao objeto Selection do
      // UIDocument ativo
      Selection selecao = uidoc.Selection;
......


Ao executar esta macro você verá uma mensagem TaskDialog com o seguinte aviso:

Você selecionou 4 elementos.


Java ::: Dicas & Truques ::: Geometria, Trigonometria e Figuras Geométricas

Como calcular o ponto de interseção de duas retas em Java - Java para Geometria Analítica e Álgebra Linear

Quantidade de visualizações: 575 vezes
Duas retas podem encontrar-se em 0, 1 ou 2 pontos. No primeiro caso, elas são chamadas paralelas; no segundo, elas são chamadas concorrentes e o ponto de encontro entre elas é chamado ponto de interseção; no terceiro caso, se duas retas possuem dois pontos em comum, então elas obrigatoriamente apresentam todos os pontos em comum e são chamadas coincidentes.

Nesta dica mostrarei como podemos encontrar o ponto de interseção (ou intersecção) de duas retas usando Java. Mas, antes de vermos o código, dê uma olhada na seguinte imagem:



Note que temos os pontos A e B correspondentes ao segmento de reta AB e os pontos C e D correspondentes ao segmento de reta CD. Nossa tarefa é encontrar o ponto exato de intersecção entre esses dois segmentos de reta.

Veja o código Java completo que nos auxilia na resolução deste problema:

package estudos;

// Classe usada para representar um ponto no
// plano 2d (Plano Cartesiano)
class Ponto{
  double x, y;
  
  // construtor da classe
  public Ponto(double x, double y){
    this.x = x;
    this.y = y;
  }
}

public class Estudos {
  public static void main(String[] args) {
    // vamos construir os quatro pontos
    Ponto A = new Ponto(5, 7);
    Ponto B = new Ponto(9, -4);
    Ponto C = new Ponto(-8, 2);
    Ponto D = new Ponto(11, 6);
    
    // vamos obter a representação do segmento AB    
    double a1 = B.y - A.y;
    double b1 = A.x - B.x;
    double c1 = (a1 * A.x) + (b1 * A.y);
       
    // vamos obter a representação do segmento CD
......


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

O ponto de interseção é: x = 5,76; y = 4,90

De fato, se você olhar a imagem novamente e desenhar este ponto, verá que ele se situa exatamente na intersecção das retas indicadas.


Java ::: Projetos Java Completos - Códigos Fonte Completos Java ::: Jogos (Games)

Como criar o jogo Pedra, Papel, Tesoura em Java - Jogo completo em Java com código comentado

Quantidade de visualizações: 4860 vezes
Faça o download do código-fonte Pedra, Papel, Tesoura em Java

Nesta dica mostrarei como criar o famoso joguinho Pedra, Papel, Tesoura na linguagem Java. Trata-se de um código bem simples e que vou comentar linha a linha, para que você extraia todo o conteúdo necessário para deixar a sua lógica de programação ainda mais afiada.

Nesta versão eu mostrarei como jogar Pedra, Papel, Tesoura contra o computador. Depois de entender todo o código você não terá dificuldade para implementar uma versão que lhe permitirá jogar contra seus amigos.

Antes de vermos o código, eis uma imagem do jogo em execução:



Quais técnicas de programação vou aprender com o código desse jogo?

O joguinho Pedra, Papel, Tesoura é ótimo para estudantes de programação que está iniciando em Java e que gostariam de aprimorar sua lógica de programação, afinal, se você desenvolver uma boa lógica de programação, você conseguirá desenvolver soluções em qualquer linguagem.

Além de entender como funciona o desenvolvimento de jogos em Java, você reforçará o seu conhecimento de laços, estrutura condicional if...else, entrada e saída e fluxo e desvio do algorítmo.

Veja, por exemplo, um trecho de código no qual testamos se o jogador escolheu Pedra, Papel ou Tesoura, e também a escolha feita pelo computador:

// o jogador escolheu Pedra?
else if(jogador == 1){
  // o computador escolheu Papel?
  if(computador == 2){
    System.out.println("Você perdeu. Papel embrulha Pedra");
    vitoriasComputador++; // aumenta as vitórias do computador
  }
  else{ // o computador escolheu Tesoura
    System.out.println("Você ganhou. Pedra amassa Tesoura");
    vitoriasJogador++; // aumenta as vitórias do jogador
  }
}
// o jogador escolheu Papel?
else if(jogador == 2){
  // o computador escolheu Tesoura?
  if(computador == 3){
    System.out.println("Você perdeu. Tesoura corta Papel");
    vitoriasComputador++; // aumenta as vitórias do computador
  }
  else{ // o ocmputador escolheu Pedra
    System.out.println("Você ganhou. Papel embrulha Pedra");
    vitoriasJogador++; // aumenta as vitórias do jogador
  }
}
Como posso obter este código fonte?

Os links para você baixar todas as versões deste projeto estão abaixo:

1) PEDPAPTESJC - Jogo Pedra, Papel, Tesoura em Java Console - NetBeans IDE - Faça o download do código-fonte Pedra, Papel, Tesoura em Java.

Não se esqueça: Uma boa forma de estudar o código é fazendo pequenas alterações e rodando para ver os resultados. Outra opção é começar um projeto Java do zero e ir adicionando trechos do código fonte para melhor entendimento de suas partes.


Desafios, Exercícios e Algoritmos Resolvidos de Java

Veja mais Dicas e truques de Java

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.