Delphi ::: Dicas & Truques ::: Strings e Caracteres |
Como converter todo o conteúdo de uma string para letras minúsculas usando a função AnsiLowerCase() do DelphiQuantidade de visualizações: 12949 vezes |
Algumas vezes precisamos converter todo o conteúdo de uma string para letras minúsculas. Em Delphi isso pode ser feito com o auxílio da função AnsiLowerCase(). Esta função recebe uma string e retorna outra string com todos os caracteres minúsculos. Veja o exemplo:procedure TForm1.Button1Click(Sender: TObject); var nome: string; begin nome := 'OSMAR'; // vamos converter a string para letras minúsculas nome := AnsiLowerCase(nome); // exibe o resultado ShowMessage(nome); end; Note que esta função suporta caracteres de mais de um byte e com acentuações. Para questões de compatibilidade, esta dica foi escrita usando Delphi 2009. |
HTML5 ::: Aplicativos Completos ::: Programas de desenho, edição e visualização de imagens e fotos |
Como criar um programa de desenho simples usando o objeto Canvas do HTML5Quantidade de visualizações: 5916 vezes |
Revisando alguns códigos que desenvolvi para clientes ao longo desses anos, encontrei um exemplo de um programa de desenho bem simples demonstrando as possibilidades gráficas do elemento Canvas do HTML. Este código foi escrito há uns dois anos e resolvi compartilhar com todos, para que vocês possam aprimorá-lo e acrescentar novas idéias, afinal, o HTML5 está mais atual do que nunca. Veja o resultado no navegador: ![]() Eu o escrevi de forma bem simples, sem usar jQuery ou qualquer outro framework, apenas JavaScript raiz mesmo, de forma que até os estudantes mais iniciantes não terão dificuldade de entender. Veja a listagem completa e com comentários: <html> <head> <title>Desenhando no canvas do HTML5</title> </head> <body style="padding: 15px"> <b>Clique e arraste para desenhar</b><br><br> <canvas id="quadro" style="border: 1px solid #666" width="600" height="350"></canvas> <br><br><button onClick="limpar()">Limpar</button> <script type="text/javascript"> // obtém uma referência ao canvas var quadro = document.getElementById('quadro'); // vamos obter o contexto de desenho var areaDesenho = quadro.getContext("2d"); // podemos desenhar? var podeDesenhar = false; // ainda não // vetores para guardar as posições x, y, e se o mouse está sendo // movimentado pressionado var vetorX = new Array(); var vetorY = new Array(); var vetorArrastar = new Array(); // agora vamos adicionar na área de desenho um "ouvidor" de // eventos mousedown, ou seja, vamos detectar quando o usuário // pressionar o botão do mouse (sem soltar) quadro.addEventListener('mousedown', function(e){ // podemos iniciar o desenho podeDesenhar = true; registrarClique(e.pageX - this.offsetLeft, e.pageY - this.offsetTop, false); desenhar(); // faça o desenho, moço }); // o "ouvidor" de evento que detecta se o mouse está sendo arrastado // pressionado quadro.addEventListener('mousemove', function(e){ if(podeDesenhar){ registrarClique(e.pageX - this.offsetLeft, e.pageY - this.offsetTop, true); desenhar(); // faça o desenho, moço } }); // o "ouvidor" de evento que detecta se o mouse foi liberado // e interrompe o desenho quadro.addEventListener('mouseup', function(e){ podeDesenhar = false; }); // o mouse saiu da área de desenho? quadro.addEventListener('mouseleave', function(e){ podeDesenhar = false; }); function registrarClique(x, y, arrastar){ // aqui nós guardamos em vetores as posições x, y do clique ou // o movimento do mouse pressionado. vetorX.push(x); vetorY.push(y); vetorArrastar.push(arrastar); } // é aqui que a mágica ocorre function desenhar(){ // primeiro vamos limpar o quadro de desenho areaDesenho.clearRect(0, 0, areaDesenho.canvas.width, areaDesenho.canvas.height); areaDesenho.strokeStyle = "#5c5cd6"; // cor areaDesenho.lineJoin = "round"; // formato da junção de linha areaDesenho.lineWidth = 5; // largura da linha // percorremos os vetores, usando como base o vetor de coordenadas x for(var i = 0; i < vetorX.length; i++){ areaDesenho.beginPath(); // inicia o caminho // o mouse foi arrastado neste evento? if((vetorArrastar[i] == true && i > 0)){ areaDesenho.moveTo(vetorX[i - 1], vetorY[i - 1]); } else{ // é o início do desenho areaDesenho.moveTo(vetorX[i] - 1, vetorY[i]); } // desenha a linha do ponto X ao ponto Y areaDesenho.lineTo(vetorX[i], vetorY[i]); // fecha o caminho areaDesenho.closePath(); // conclui de fato o desenho areaDesenho.stroke(); } } // e aqui nós limpamos a área de desenho e esvaziamos os vetores function limpar(){ areaDesenho.clearRect(0, 0, areaDesenho.canvas.width, areaDesenho.canvas.height); vetorX = []; vetorY = []; vetorArrastar = []; } </script> </body> </html> Salve o código como "desenho.html" (cuidado para não salvar como "desenho.html.txt") e abra-o no seu navegador, remoto ou localmente. Você pode começar suas modificações alterando a cor do desenho, a largura da linha, etc. Você pode também deixar figuras pré-configuradas e até permitir que o usuário inclua fotos no Canvas. Para os estudantes que já sabem Node.js, saiba que é possível enviar os três vetores via sockets em um ambiente real time para que outros usuários na rede vejam o seu desenho em tempo real. Bons estudos. |
C# ::: Desafios e Lista de Exercícios Resolvidos ::: Strings e Caracteres |
Exercícios Resolvidos de C# - Como retornar o código ASCII associado a um caractere em C# - Ler um caractere e retornar o código ASCII correspondenteQuantidade de visualizações: 653 vezes |
Pergunta/Tarefa: Escreva um programa C# que pede para o usuário informar um caractere (letra ou número) e mostre o código ASCII correspondente. Sua saída deverá ser parecida com: Informe um caractere: A Você informou o caractere: A O código ASCII correspondente é: 65 Veja a resolução comentada deste exercício em C#: using System; namespace Estudos { class Principal { // função principal do programa C# static void Main(string[] args) { // vamos pedir para o usuário informar uma letra, símbolo ou pontuação Console.Write("Informe um caractere: "); // vamos ler o caractere informado char caractere = Console.ReadLine()[0]; // agora vamos obter o código ASCII correspondente int codigo = (int)caractere; // e mostramos o resultado Console.WriteLine("Você informou o caractere: " + caractere); Console.WriteLine("O código ASCII correspondente é: " + codigo); Console.WriteLine("\nPressione uma tecla para sair..."); Console.ReadKey(); } } } O Código Padrão Americano para o Intercâmbio de Informação (do inglês American Standard Code for Information Interchange - ASCII, pronunciado [áski]) é um sistema de representação de letras, algarismos e sinais de pontuação e de controle, através de um sinal codificado em forma de código binário (cadeias de bits formada por vários 0 e 1), desenvolvido a partir de 1960, que representa um conjunto de 128 sinais: 95 sinais gráficos (letras do alfabeto latino, algarismos arábicos, sinais de pontuação e sinais matemáticos) e 33 sinais de controle, utilizando 7 bits para representar todos os seus símbolos. |
Java ::: Fundamentos da Linguagem ::: Tipos de Dados |
Apostila Java - Como usar o tipo de dados double da linguagem JavaQuantidade de visualizações: 22088 vezes |
O tipo de dados double é usado quando precisamos armazenar números de ponto-flutuante (com parte fracionária) na faixa 4.94065645841246544e-324 até 1.79769313486231570e+308. Este tipo ocupa 64 bits na memória (o mesmo que um long) e possui precisão de 14 ou 15 dígitos significativos. Veja um exemplo de seu uso:public class Estudos{ public static void main(String args[]){ double valor = 54.5; System.out.println("O valor da variável é: " + valor); System.exit(0); } } É importante observar que a maioria dos métodos numéricos das classes Java (principalmente Math) possuem parâmetros do tipo double. Isso é feito de modo que possamos fornecer argumentos do tipo byte, short, int, long, float, etc. Como todos os tipos primitivos (exceto boolean) podem ser convertidos para double sem a necessidade de cast, esta é sem dúvida uma escolha bem acertada dos arquitetos da linguagem. Observe ainda que o tipo double não pode ser convertido implicitamente para nenhum outro tipo de dados primitivo. Se precisarmos convertê-lo para os tipos char, byte, short, int, long ou float, teremos que lançar mão de uma coerção (cast). Veja: double valor = 54.5; int valor2 = (int)(valor); É preciso ficar atento ao fato de que uma coerção de um tipo de ponto-flutuante para um tipo integral (inteiro) resulta na perda da parte fracionária do valor que está sofrendo o cast. Não é recomendável usar o tipo double (ou float) para aplicações financeiras nas quais a precisão dos valores numéricos é de muita importância. Para estes casos recomenda-se usar a classe BigDecimal. |
Java ::: Pacote java.util ::: Iterator |
Como usar o método next() da interface Iterator do Java para obter o próximo elemento da iteraçãoQuantidade de visualizações: 4219 vezes |
O método next() da interface Iterator é usado quando queremos acessar o próximo elemento de uma iteração. Veja sua assinatura:E next() Veja que o tipo retornado equivale ao tipo do elemento usado na declaração do iterador. Veja um exemplo: package estudos; import java.util.ArrayList; import java.util.Iterator; public class Estudos{ public static void main(String[] args) { // vamos criar uma ArrayList ArrayList<String> pessoas = new ArrayList(); pessoas.add("Osmar"); pessoas.add("Carlos"); pessoas.add("Fernanda"); // vamos obter um iterador para a lista Iterator<String> pessoa = pessoas.iterator(); // vamos obter o próximo elemento (neste caso, o primeiro) String s1 = pessoa.next(); System.out.println(s1); // vamos obter o próximo elemento (o segundo) String s2 = pessoa.next(); System.out.println(s2); // vamos obter o próximo elemento (o terceiro) String s3 = pessoa.next(); System.out.println(s3); // vamos obter o próximo elemento (vai dar erro. não há um quarto elemento) String s4 = pessoa.next(); System.out.println(s4); } } Ao executarmos este código nós teremos o seguinte resultado: Osmar Carlos Fernanda Exception in thread "main" java.util.NoSuchElementException at java.util.ArrayList$Itr.next(ArrayList.java:834) at estudos.Estudos.main(Estudos.java:30) Java Result: 1 Veja que o método next() atira uma exceção do tipo NoSuchElementException se o iterador não possuir mais elementos. |
Java ::: Classes e Componentes ::: JComboBox |
Tutorial Java Swing - Como remover todos os itens de um JComboBox (Caixa de Combinação) em tempo de execuçãoQuantidade de visualizações: 12485 vezes |
Nesta dica mostrarei como é possível usar o método removeAllItems() da classe JComboBox para remover todos os seus itens. Note que criei a aplicação Java Swing na mão mesmo, sem usar nenhum editor visual de GUI, como o que está disponível no IDE Netbeans. Esta abordagem pode não ser produtiva, mas é excelente para entender como o Java Swing funciona. Veja o código completo para o exemplo: package arquivodecodigos; import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Estudos extends JFrame{ JComboBox combo; public Estudos(){ super("A classe JComboBox"); Container c = getContentPane(); c.setLayout(new FlowLayout(FlowLayout.LEFT)); // Cria os itens da lista String nomes[] = {"Carlos", "Marcelo", "Fabiana", "Carolina", "Osmar"}; // Cria o JComboBox combo = new JComboBox(nomes); // Um botão que permite limpar o JComboBox JButton btn = new JButton("Limpar"); btn.addActionListener( new ActionListener(){ @Override public void actionPerformed(ActionEvent e){ // remove todos os itens do JComboBox combo.removeAllItems(); } } ); // Adiciona o JComboBox à janela c.add(combo); // Adiciona o botão à janela c.add(btn); setSize(350, 250); setVisible(true); } public static void main(String args[]){ Estudos app = new Estudos(); app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } } Aqui os itens do JComboBox foram inseridos a partir de um vetor de String. |
C ::: Desafios e Lista de Exercícios Resolvidos ::: Estruturas de Controle |
Exercício Resolvido de C - Como testar se um ano é bissexto em C - Um programa que lê um ano com quatro dígitos e informa se ele é bissexto ou nãoQuantidade de visualizações: 1079 vezes |
Pergunta/Tarefa: Chama-se ano bissexto o ano ao qual é acrescentado um dia extra, ficando ele com 366 dias, um dia a mais do que os anos normais de 365 dias, ocorrendo a cada quatro anos (exceto anos múltiplos de 100 que não são múltiplos de 400). Isto é feito com o objetivo de manter o calendário anual ajustado com a translação da Terra e com os eventos sazonais relacionados às estações do ano. O último ano bissexto foi 2012 e o próximo será 2016. Um ano é bissexto se ele for divisível por 4 mas não por 100, ou se for divisível por 400. Escreva um programa C que pede ao usuário um ano com quatro dígitos e informa se ele é bissexto ou não. Sua saída deverá ser parecida com: Informe o ano: 2024 O ano informado é bissexto. Veja a resolução comentada deste exercício usando C console: #include <stdio.h> #include <stdlib.h> #include <locale.h> int main(int argc, char *argv[]){ int ano; setlocale(LC_ALL,""); // para acentos do português // vamos solicitar que o usuário informe um ano printf("Informe o ano: "); scanf("%d", &ano); // vamos verificar se o ano informado é bissexto if(((ano % 4 == 0) && (ano % 100 != 0)) || (ano % 400 == 0)){ printf("\nO ano informado é bissexto.\n"); } else{ printf("\nO ano informado não é bissexto.\n"); } printf("\n\n"); system("pause"); return 0; } |
Python ::: Dicas & Truques ::: Data e Hora |
Como construir uma data em Python usando o construtor da classe datetimeQuantidade de visualizações: 6940 vezes |
Nesta dica mostrarei como podemos usar o construtor da classe datetime do Python para construir e retornar uma nova data. Note que estou fornecendo a data para construtor da classe datetime usando o ano, o mês e o dia. Veja o código Python completo para o exemplo: from datetime import datetime # função principal do programa def main(): # vamos definir o dia, mês e ano dia = 20 mes = 4 ano = 1980 # Constrói um datetime (ano, mês, dia) data = datetime(ano, mes, dia) # Exibe o conteúdo do datetime print("A data construída foi {0}".format(data)) # Obtém o ano da data recém-criada print("O ano da data construída foi: {0}".format(data.year)) if __name__== "__main__": main() Ao executar este código Python nós teremos o seguinte resultado: A data construída foi 1980-04-20 00:00:00 O ano da data construída foi: 1980 |
C# ::: Namespace System.Windows.Forms ::: Formulários e Janelas |
Como definir uma imagem de fundo para um formulário C# Windows Forms usando a propriedade BackgroundImageQuantidade de visualizações: 14254 vezes |
Formulários Windows Forms podem conter uma imagem de fundo. Isso pode ser feito por meio da propriedade BackgroundImage. Em tempo de design, só precisamos clicar no formulário, acessar a janela de propriedades (Properties) e modificar o valor da propriedade BackgroundImage. Quando clicamos no botão ao lado do valor da propriedade, temos acesso à janela Select Resource. Deixe a opção Project resource file marcada e clique o botão Import. Selecione a imagem que você deseja usar e clique o botão OK. Imediatamente a imagem importada será aplicada ao fundo do formulário. É importante observar que esta forma de adicionar a imagem de fundo evita que tenhamos que enviar a imagem juntamente com nossa aplicação. Como a imagem importada fará parte do Resources da aplicação, ela será compilada e fará parte do .exe resultante. É possível também carregar uma imagem e colocá-la como fundo para um formulário em tempo de execução. Veja um trecho de código no qual carregamos uma imagem JPG localizada em uma pasta imagens no mesmo diretório do .exe da aplicação: private void button2_Click(object sender, EventArgs e){ // using System.IO; this.BackgroundImage = new Bitmap(Path.GetDirectoryName( Application.ExecutablePath) + @"\imagens\foto.jpg"); } |
PHP ::: Dicas & Truques ::: Strings e Caracteres |
Como concatenar strings em PHP usando o operador "."Quantidade de visualizações: 266 vezes |
Todas as linguagens de programação oferecem o seu operador de concatenação, que nos permite juntar palavras, frases, textos e valores de variáveis. Na maioria das linguagens o operador de concatenação é o sinal de adição "+". Porém, em PHP, a concatenação é feita usando-se o operador ".". Veja um exemplo abaixo de como usá-lo: <?php $nome = "Carlos"; $cidade = "São Paulo"; echo "Meu nome é " . $nome . " e eu moro em " . $cidade . "."; ?> |
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 |
Python - Como criar o jogo Pedra, Papel, Tesoura em Python - Jogo completo em Python com código comentado |
Últimos Exercícios Resolvidos |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
1º lugar: Java |