HTML5 ::: HTML5 + JavaScript ::: Canvas

Programação gráfica para iniciantes - Como desenhar círculos com ou sem preenchimento usando o método arc() do objeto Canvas do HTML5

Quantidade de visualizações: 6854 vezes
Podemos usar o método arc() do objeto Canvas do HTML5 para desenhar círculos com ou sem prenchimento. Veja nos exemplos abaixo como isso pode ser feito. Primeiro um círculo sem preenchimento:

<!doctype html>
<html>
<head>
  <title>O objeto Canvas do HTML5</title>
</head>
 
<body>
 
<Canvas id="canvas1" width="500" height="350"></Canvas>
 
<script type="text/javascript">
  // obtemos uma referência ao elemento Canvas  
  var canvas = document.getElementById("canvas1");
  // obtemos o contexto de desenho
  var contexto = canvas.getContext("2d");
     
  // vamos desenhar um círculo sem preenchimento com raio de 80
  contexto.beginPath(); // início um novo caminho
  // o círculo começa no x = 100, y = 100, começa no ângulo 0
  // e vai até o ângulo 360 (as medidas são em radianos, não em graus)
  contexto.arc(100, 100, 80, 0, 2 * Math.PI, false);
  contexto.lineWidth = 2; // largura da linha
  contexto.strokeStyle = '#990000'; // cor da linha
  contexto.stroke(); // realiza o desenho    
</script>
 
</body>
 
</html>

Ao abrir esta página HTML nós teremos o seguinte resultado:



E agora um círculo preenchido:

<!doctype html>
<html>
<head>
  <title>O objeto Canvas do HTML5</title>
</head>
 
<body>
 
<Canvas id="canvas1" width="500" height="350"></Canvas>
 
<script type="text/javascript">
  // obtemos uma referência ao elemento Canvas  
  var canvas = document.getElementById("canvas1");
  // obtemos o contexto de desenho
  var contexto = canvas.getContext("2d");
     
  // vamos desenhar um círculo sem preenchimento com raio de 80
  contexto.beginPath(); // início um novo caminho
  // o círculo começa no x = 100, y = 100, começa no ângulo 0
  // e vai até o ângulo 360 (as medidas são em radianos, não em graus)
  contexto.arc(100, 100, 80, 0, 2 * Math.PI, false);
 
  // vamos preencher o círculo
  contexto.fillStyle = "#CCCCCC"; // cor do preenchimento
  contexto.fill(); // preenche de fato
 
  contexto.lineWidth = 2; // largura da linha
  contexto.strokeStyle = '#990000'; // cor da linha
  contexto.stroke(); // realiza o desenho    
</script>
 
</body>
</html>

Ao abrir esta página HTML nós teremos o seguinte resultado:




Ruby ::: Dicas & Truques ::: Strings e Caracteres

Como inserir uma substring em uma determinada posição de uma string em Ruby usando a função insert()

Quantidade de visualizações: 9003 vezes
Muita vezes precisamos inserir uma substring em uma determinada posição de uma string em Ruby. Esta tarefa pode ser realizada com a função insert() da classe String.

Esta função opera na string original e requer dois argumentos: a posição na string onde a substring será inserida e a substring propriamente dita. A posição é um índice iniciando em 0. Índices negativos são contados a partir do final da string.

Veja o exemplo:

# declara e inicializa uma variável string
frase = "Gosto muito de Ruby"
puts "A frase original é: " + frase

# vamos inserir " Python e" antes de "Ruby". 
frase.insert(14, " Python e")

# exibe o resultado 
puts "A nova frase é: " + frase

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

A frase original é: Gosto muito de Ruby
A nova frase é: Gosto muito de Python e Ruby


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

Como retornar o tamanho de um array em Ruby usando a função size

Quantidade de visualizações: 7191 vezes
Em algumas situações nós precisamos saber como retornar a quantidade de itens em um array Ruby. Para isso nós podemos usar a função size do objeto Array.

Veja o exemplo:

# vamos declarar um array com 5 elementos
valores = [3, 6, 78, 32, 1]

# vamos obter o seu tamanho
tamanho = valores.size

# e mostramos o resultado
puts "O array contém #{tamanho} elementos"

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

O array contém 5 elementos


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

Como posicionar os componentes nas linhas e colunas de um GridBagLayout do Java Swing usando as propriedades gridx e gridy

Quantidade de visualizações: 12338 vezes
A classe GridBagConstraints, usada para definir como os componentes serão distribuidos em um GridBagLayout, possui duas variáveis que permitem definir a linha e coluna nas quais o componente será colocado. Veja-as abaixo:

gridx - Especifica a coluna na qual o componente será colocado. A primeira coluna possui o valor 0. Esta variável pode receber também o valor RELATIVE (valor padrão). Neste caso, o componente será colocado imediatamente após o último componente inserido (na horizontal).

gridy - Especifica a linha na qual o componente será colocado. A primeira linha possui o valor 0. Esta variável pode receber também o valor RELATIVE (valor padrão). Neste caso, o componente será colocado imediatamente abaixo do último componente inserido (na vertical).

Veja um trecho de código que mostra como posicionar seis botões nas linhas e colunas de um GridBagLayout:

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

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

    // define o layout
    setLayout(new GridBagLayout());

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

    // 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);
    setVisible(true);    
  }

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



C# ::: Dicas & Truques ::: Strings e Caracteres

Como transformar uma string em um array de caracteres em C# usando o método ToCharArray()

Quantidade de visualizações: 13837 vezes
O método ToCharArray() da classe String da linguagem C# permite retornar um array de char contendo todos os caracteres presente na string original. Podemos tirar proveito disso para manipular os caracteres individuais de uma palavra, frase ou texto.

Veja um código C# completo no qual demonstramos o seu uso:

using System;

namespace Estudos {
  class Program {
    static void Main(string[] args) {
      string frase = "Gosto de C#";
      Console.WriteLine("String original: " + frase);

      // obtém um array de caracteres a partir da string
      char[] letras = frase.ToCharArray();

      // exibe os caracteres no array
      for (int i = 0; i < letras.Length; i++) {
        Console.WriteLine(letras[i]);
      }

      Console.WriteLine("Pressione uma tecla para sair...");
      Console.ReadKey();
    }
  }
}

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

String original: Gosto de C#
G
o
s
t
o

d
e

C
#


GNU Octave ::: GNU Octave para Engenharia ::: Geometria Analítica e Álgebra Linear

GNU Octave para Álgebra Linear - Como calcular o determinante de uma matriz usando a função det() do GNU Octave

Quantidade de visualizações: 2714 vezes
Na Matemática e na Álgebra Linear, o determinante é uma função matricial que associa a cada matriz quadrada um escalar, ou seja, o determinante é uma função que transforma uma matriz quadrada em um número real.

O determinante, ou melhor, a função determinante, permite saber se a matriz tem ou não inversa (matriz inversa), pois, as matriz que não tem inversa, são precisamente aquelas cujo determinante é igual a 0. Se o determinante for diferente de zero, então a matriz é uma matriz invertível.

O determinante de uma matriz A é denotado por det(A), det A ou |A|.

O software GNU Octave nos fornece uma forma rápida para obtermos o determinante de uma matriz: a função det(). Veja o exemplo a seguir (digitando diretamente na Janela de Comandos):

>> A = [1, 2, 3; 2, 5, 2; 1, 3, 1] [ENTER]
A =

   1   2   3
   2   5   2
   1   3   1

>> det(A) [ENTER]
ans = 2
>>

Veja que declaramos uma matriz 3x3 com o nome A e em seguida usamos a função det() para obter o seu determinante.

Vamos ver agora como podemos fazer esse mesmo cálculo em um script do GNU Octave:

# declara uma matriz quadrada de ordem 3
A = [1, 2, 3; 2, 5, 2; 1, 3, 1]

# calculamos o determinante
determinante = det(A)

# mostramos os resultado
fprintf("O determinante da matriz A é %f\n", determinante);

Não se esqueça de pesquisar sobre as propriedades do determinante. São cerca de 10 propriedades que nos ajudam a calcular o determinante da matriz simplesmente olhando para a sua composição.


Delphi ::: Win32 API (Windows API) ::: Formulários e Janelas

Como usar a função GetWindow() da API do Windows para pesquisar e retornar um handle para uma janela baseado em seu título completo ou parcial usando Delphi

Quantidade de visualizações: 15104 vezes
Em algumas situações nós precisamos pesquisar e retornar um handle para uma janela baseado em seu título completo ou parcial, ou seja, gostaríamos de encontrar uma janela que contenha a palavra "sexo".

Isso pode ser feito com o auxílio da função GetWindow() da API do Windows. Veja:

// função personalizada que permite encontrar uma janela
// baseado em seu título
function FindWindowByTitle(WindowTitle: string): Hwnd;
var
  NextHandle: Hwnd;
  NextTitle: array[0..255] of char;
begin
  // vamos obter a primeira janela
  NextHandle := GetWindow(Application.Handle, GW_HWNDFIRST);

  while NextHandle > 0 do
    begin
      // vamos obter o título da janela
      GetWindowText(NextHandle, NextTitle, 256);

      // a janela contém o título que procuramos?
      if Pos(Uppercase(WindowTitle), UpperCase(String(NextTitle))) <> 0 then
         begin
           Result := NextHandle;
           Exit;
         end
      else
        // vamos tentar a próxima janela
        NextHandle := GetWindow(NextHandle, GW_HWNDNEXT);
    end;

    // não encontramos nada? vamos retornar um handle nulo
    Result := 0;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  handle: hwnd;
begin
  // vamos localizar e fechar a Calculadora do Windows
  // ou qualquer janela que contenha o texto "Calculadora"
  handle := FindWindowByTitle('Calculadora');
  if handle <> 0 then // encontramos a janela? vamos fechá-la
    SendMessage(handle, WM_SYSCOMMAND, SC_CLOSE, 0)
  else
    ShowMessage('A janela pesquisada não foi encontrada');
end;

Neste exemplo nós pesquisamos uma janela que contenha a palavra "Calculadora" em seu título. Se encontrada, nós a fechamos com o auxílio da função SendMessage() e a mensagem WM_SYSCOMMAND com o valor SC_CLOSE para o parâmetro wParam.

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


Python ::: wxPython ::: Eventos e Tratadores de Eventos

Como tratar o evento wx.EVT_MOVE em suas aplicações wxPython - Interfaces gráficas no Python

Quantidade de visualizações: 212 vezes
Em algumas situações nós precisamos reagir ao evento wx.EVT_MOVE em nossas aplicações wxPython. Este evento é gerado todas as vezes que movemos uma janela para uma nova posição.

Veja o código completo para uma aplicação wxPython na qual interceptamos e tratamos o evento wx.EVT_MOVE na janela principal do programa. Note o uso da função e.GetPosition() para recuperarmos as coordenadas x e y do evento e mostrarmos o resultado em controles wx.StaticText.

# vamos importar o framework wxPython 
import wx

# classe que representará a janela principal da
# aplicação wxPython
class JanelaPrincipal(wx.Frame):
  # o método construtor
  def __init__(self, *args, **kw):
    # chama o construtor da classe wx.Frame
    super(JanelaPrincipal, self).__init__(*args, **kw)

    # chama a função que inicializa a GUI
    self.InicializarGUI()

  # método usado para gerenciar o evento Move
  def OnMove(self, e):
    # obtemos a posição do evento e guardamos nas variáveis x e y
    x, y = e.GetPosition()
    # mostramos os valores nas labels
    self.st1.SetLabel(str(x))
    self.st2.SetLabel(str(y))

  # função que inicializa a GUI do programa
  def InicializarGUI(self):
    # criamos dois controles StaticText com os labels já definindos 
    wx.StaticText(self, label='x:', pos=(10,10))
    wx.StaticText(self, label='y:', pos=(10,30))

    # criamos mais dois controles StaticText para escrevermos neles
    self.st1 = wx.StaticText(self, label='', pos=(30, 10))
    self.st2 = wx.StaticText(self, label='', pos=(30, 30))

    # fazemos um binding o evento wx.EVT_MOVE para a
    # função OnMove que criamos
    self.Bind(wx.EVT_MOVE, self.OnMove)

    # definimos o tamanho da janela
    self.SetSize((450, 350))
    # define a cor de fundo da janela (Windows 10)
    self.SetBackgroundColour((150, 250, 100, 255))
    # definimos o título da janela
    self.SetTitle('O evento Move')
    # e centralizamos a janela
    self.Centre()

# função principal do programa Python
def main():
  # vamos criar a aplicação wxPython
  app = wx.App()
  janela_principal = JanelaPrincipal(None)
  janela_principal.Show()
  app.MainLoop()

if __name__ == "__main__":
  main()



Dart ::: Desafios e Lista de Exercícios Resolvidos ::: Laços de Repetição

Exercício Resolvido de Dart - Escreva um programa Dart que usa o laço for para desenhar um padrão de diamante de estrelas

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

Neste exercício para a prática da linguagem Dart você deverá usar o laço for para desenhar o famoso padrão de diamante de estrelas. Você pode também usar o laço while, se assim você o desejar.

O programa deverá pedir que o usuário informe a quantidade de linhas que marcará a metade do diamante.

Seu programa deve apresentar a seguinte saída:

Informe a quantidade de linhas: 5
    *
   ***
  *****
 *******
*********
 *******
  *****
   ***
    *
Resposta/Solução:

Veja a resolução comentada deste exercício em Dart:

// Vamos importar a biblioteca dart:io
import "dart:io";

void main(){
  // variáveis que vamos usar na resolução do problema
  int linhas, estrelas, espacos;
  
  // vamos pedir a quantidade de linhas 
  stdout.write("Informe a quantidade de linhas: ");
  // vamos ler a entrada do usuário
  linhas = int.parse(stdin.readLineSync());
  
  estrelas = 1; // começamos com uma estrela (no topo do diamante)
  // se linhas for igual a 5 nós começamos com 4 espaços
  espacos = linhas - 1;  
	
  // repete duas vezes a quantidade de linhas informadas
  for(int i = 1; i < linhas * 2; i++){
    // vamos imprimir os espaços
    for(int j = 1; j <= espacos; j++){
      stdout.write(" ");
    }
        
    // agora vamos imprimir estrelas
    for(int j = 1; j < estrelas * 2; j++){
      stdout.write("*");
    }
		    
    // passamos para a próxima linha
    stdout.write("\n");
        
    if(i < linhas){ // é a parte superior do diamante
      espacos--; // diminui os espaços
      estrelas++; // e aumenta as estrelas
    }
    else{ // é a parte inferior do diamente
      espacos++; // aumenta os espaços
      estrelas--; // e diminui as estrelas
    }
  }
}



C ::: Dicas & Truques ::: Strings e Caracteres

Como verificar se uma string é igual, maior ou menor que outra em C usando a função strcmp()

Quantidade de visualizações: 22667 vezes
A função strcmp() da linguagem C pode ser usada para verificar se uma string é igual, maior ou menor que outra.

Esta função, presente no header string.h aceita duas strings e retorna um valor inteiro: 0 se as strings forem iguais; maior que 0 se a primeira string for maior que a segunda e menor que 0 se a primeira string for menor que a segunda.

Veja um exemplo de seu uso:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(int argc, char *argv[]){
  char palavra1[] = "Java";
  char palavra2[] = "JavaScript";

  if(strcmp(palavra1, palavra2) == 0){
    printf("As palavras sao iguais");
  }
  else if(strcmp(palavra1, palavra2) > 0){
    printf("A primeira string e maior que a segunda");
  }
  else if(strcmp(palavra1, palavra2) < 0){
    printf("A segunda string e maior que a primeira");
  }

  puts("\n\n");
  system("PAUSE");
  return 0;
}

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

A segunda string é maior que a primeira.

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á 26 usuários muito felizes estudando em nosso site.