![]() |
|||||
|
JavaScript ::: Dicas & Truques ::: Set (Conjunto) |
Como usar objetos Set em seus códigos JavaScriptQuantidade de visualizações: 1226 vezes |
Os objetos Set, introduzidos no JavaScript na revisão ECMAScript 2015, também chamada de ES6 e ECMAScript 6, trazem para a linguagem a noção de conjuntos. Um conjunto é uma coleção de valores únicos, ou seja, cada valor pode aparecer somente uma vez. Dessa forma, objetos Set do JavaScript obedecem esta regra e podem armazenar todos os tipos de dados, desde os tipos primitivos númericos até objetos de classes definidas pelo usuário. Nesta dica veremos como adicionar elementos a um Set e depois percorrer o seu conteúdo e exibir todos os seus valores. Veja o código a seguir: <!doctype html> <html> <head> <title>O método setInterval() do JavaScript</title> </head> <body> <script type="text/javascript"> // vamos criar um novo conjunto var linguagens = new Set(); // vamos adicioar 4 linguagens linguagens.add("Java"); linguagens.add("PHP"); linguagens.add("C++"); linguagens.add("Python"); // vamos percorrer os elementos do conjunto for(var linguagem of linguagens){ document.writeln(linguagem + "<br>"); } </script> </body> </html> Ao executar este código nós teremos o seguinte resultado: Java PHP C++ Python Em mais dicas dessa seção você aprenderá mais sobre os métodos e propriedades do objeto Set da linguagem JavaScript. |
C ::: Dicas & Truques ::: Ponteiros, Referências e Memória |
Como alocar memória dinâmica usando a função calloc() da linguagem CQuantidade de visualizações: 18842 vezes |
A função calloc() é bem parecida com a função malloc() e também é usada em C para alocarmos um bloco de memória. A diferença é que calloc() recebe a quantidade de elementos e o número de bytes do elemento e retorna um ponteiro do tipo void (genérico) para o início do bloco de memória obtido. Veja sua assinatura:void *calloc(size_t n, size_t size); Se a memória não puder se alocada, um ponteiro nulo (NULL) será retornado. É importante se lembrar de alguns conceitos antes de usar esta função. Suponhamos que você queira alocar memória para um único inteiro. Você poderia ter algo assim: // aloca memória para um int ponteiro = calloc(1, 4); Embora este código esteja correto, não é um boa idéia assumir que um inteiro terá sempre 4 bytes. Desta forma, é melhor usar o operador sizeof() para obter a quantidade de bytes em um inteiro em uma determinada arquitetura. Veja: // aloca memória para um int ponteiro = calloc(1, sizeof(int)); Eis o código completo para um aplicativo C que mostra como alocar memória para um inteiro e depois atribuir e obter o valor armazenado no bloco de memória alocado: #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { // ponteiro para uma variável do tipo inteiro int *ponteiro; // aloca memória para um int ponteiro = calloc(1, sizeof(int)); // testa se a memória foi alocada com sucesso if(ponteiro) printf("Memoria alocada com sucesso.\n"); else printf("Nao foi possivel alocar a memoria.\n"); // atribui valor à memória alocada *ponteiro = 45; // obtém o valor atribuído printf("Valor: %d\n\n", *ponteiro); // libera a memória free(ponteiro); system("PAUSE"); return 0; } Uma aplicação interessante da função calloc() é quando precisamos construir uma matriz dinâmica. Veja como isso é feito no código abaixo: #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { int i; // quantidade de elementos na matriz int quant = 10; // ponteiro para o bloco de memória int *ponteiro; // aloca memória para uma matriz de inteiros ponteiro = calloc(quant, sizeof(int)); // testa se a memória foi alocada com sucesso if(ponteiro) printf("Memoria alocada com sucesso.\n"); else{ printf("Nao foi possivel alocar a memoria.\n"); exit(1); } // atribui valores aos elementos do array for(i = 0; i < quant; i++){ ponteiro[i] = i * 2; } // exibe os valores for(i = 0; i < quant; i++){ printf("%d ", ponteiro[i]); } // libera a memória free(ponteiro); printf("\n\n"); system("PAUSE"); return 0; } |
Python ::: Desafios e Lista de Exercícios Resolvidos ::: NumPy Python Library |
Exercício Resolvido de Python NumPy - Como somar duas matrizes usando a biblioteca NumPy do PythonQuantidade de visualizações: 1249 vezes |
Pergunta/Tarefa: Escreva um programa Python que usa a biblioteca NumPy para efetuar a soma de duas matrizes de mesma ordem, ou seja, mesmo número de linhas e colunas. Seu código deverá somar o primeiro elemento da matriz A com o primeiro elemento da matriz B, e assim por diante. Sua saída deverá ser parecida com: A primeira matriz é: [[4 1 3] [9 2 5]] A segunda matriz é: [[ 3 10 2] [ 1 13 4]] A matriz soma é: [[ 7 11 5] [10 15 9]] Veja a resolução comentada deste exercício em Python: # vamos importar a biblioteca NumPy import numpy as np # função principal do programa def main(): # vamos criar a primeira matriz a = np.array([[4, 1, 3], [9, 2, 5]]) # vamos criar a segunda matriz b = np.array([[3, 10, 2], [1, 13, 4]]) # vamos somar as duas matrizes c = a + b # e agora mostramos o resultado print("A primeira matriz é:\n{0}".format(a)) print("A segunda matriz é:\n{0}".format(b)) print("A matriz soma é:\n{0}".format(c)) if __name__== "__main__": main() |
Delphi ::: Dicas & Truques ::: Matemática e Estatística |
Como calcular MDC em DelphiQuantidade de visualizações: 12301 vezes |
Como calcular o MDC (Máximo Divisor Comum) em Delphi 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 personalizada que permite calcular o MDC de dois // valores inteiros function MDC(a, b: Integer): Integer; var resto: Integer; begin while b <> 0 do begin resto := a mod b; a := b; b := resto; end; Result := a; end; procedure TForm3.Button1Click(Sender: TObject); var x, y: Integer; begin x := StrToInt(Dialogs.InputBox('MDC', 'Informe o primeiro valor:', '')); y := StrToInt(Dialogs.InputBox('MDC', 'Informe o segundo valor:', '')); // vamos mostrar o resultado ShowMessage('O Máximo Divisor Comum de ' + IntToStr(x) + ' e ' + IntToStr(y) + ' é ' + IntToStr(MDC(x, y))); end; Para fins de compatibilidade, esta dica foi escrita usando Delphi 2009. |
C# ::: Dicas & Truques ::: Mouse e Teclado |
C# Windows Forms - Como verificar o estado da tecla Num Lock em suas aplicações C# Windows FormsQuantidade de visualizações: 8309 vezes |
Em algumas situações nós precisamos verificar o estado da tecla Num Lock (que ativa ou desativa o teclado numérico), ou seja, precisamos saber se ela está ou não ativada. Em C# isso pode ser feito de duas formas: 1) A forma mais simples, oferecida no .NET Framework a partir da versão 2.0; 2) Usando código não gerenciado (unmanaged code) e acessar a API do Windows (Win32 API). Vamos começar com a forma mais fácil, disponível no .NET Framework a partir da versão 2.0: private void button1_Click(object sender, EventArgs e){ // vamos verificar se a tecla Num Lock está ativada if(Control.IsKeyLocked(Keys.NumLock)){ MessageBox.Show("A tecla Num Lock está ativada"); } else{ MessageBox.Show("A tecla Num Lock NÃO está ativada"); } } Aqui nós usamos o método IsKeyLocked() da classe Control e fornecemos como argumento a constante NumLock, da enumeração Keys. A segunda forma consiste em usar código não gerenciado (unmanaged code) e acessar a API do Windows (Win32 API). Para isso devemos seguir os seguintes passos: a) Adicionar using System.Runtime.InteropServices; na seção de importações. b) Adicionar o código abaixo no corpo da classe, como um método: // Função com código não gerenciado que obtém o estado de uma // determinada tecla [DllImport("user32.dll", CharSet = CharSet.Auto, ExactSpelling = true, CallingConvention = CallingConvention.Winapi)] public static extern short GetKeyState(int keyCode); c) Adicione o código abaixo no evento Click de um botão: private void button1_Click(object sender, EventArgs e){ // vamos obter o estado da tecla Num Lock como um boolean bool NumLock = (((ushort)GetKeyState(0x90)) & 0xffff) != 0; // vamos verificar se a tecla Num Lock está ativada if(NumLock){ MessageBox.Show("A tecla Num Lock está ativada"); } else{ MessageBox.Show("A tecla Num Lock NÃO está ativada"); } } |
Revit Python Shell ::: Dicas & Truques ::: Selection, Seleção |
Como pedir para o usuário selecionar somente um elemento no Revit usando a função PickObject() do objeto Selection do Revit Python ShellQuantidade de visualizações: 337 vezes |
Nesta dica mostrarei como podemos usar a função PickObject() do objeto Selection do Revit Python Shell para pedir para o usuário selecionar somente um elemento na área de desenho do Revit. Note que o objeto Selection é obtido a partir do objeto uidoc, carregado automaticamente pelo Revit Python Shell. Depois que o usuário seleciona o elemento, nós usamos a função doc.GetElement() para receber a referência ao elemento e convertê-la para um elemento real. Então, para finalizar, nós acessamos a propriedade Id do elemento e a exibimos na tela. Veja o código Revit Python Shell completo para o exemplo: # faz o import necessário from Autodesk.Revit.UI.Selection import ObjectType # precisamos ocultar a janela do Revit Python Shell __window__.Hide() # agora fazemos uma chamada à função PickObject() do objeto Selection e retornamos # uma Reference selecionado = uidoc.Selection.PickObject(ObjectType.Element, "Selecione um elemento") # depois que o usuário fizer a seleção nós mostramos a janela do # Revit Python Shell novamente __window__.Show() __window__.Topmost = True # obtemos o elemento a partir de sua referência usando a função # GetElement() do objeto Document elemento = doc.GetElement(selecionado) # e mostramos o resultado print("O id do elemento selecionado é: {0}".format(elemento.Id)) Ao executar este código Revit Python Shell nós teremos o seguinte resultado: O id do elemento selecionado é: 359410 Veja como usei as funções __window__.Hide(), __window__.Show() e __window__.Topmost = True para ocultar a janela do Revit Python Shell e exibí-la novamente depois que o usuário fizer a seleção do elemento. Sem essas funções essa operação não pode ser realizada. |
Java ::: Dicas & Truques ::: Mouse e Teclado |
Java Avançado - Como verificar se a tecla Caps Lock está ativada usando o método getLockingKeyState() da classe Toolkit do JavaQuantidade de visualizações: 11419 vezes |
Nesta dica mostrarei como é possível usar o método getLockingKeyState() da classe Toolkit da linguagem Java para verificar se a tecla Caps Lock estão ou não ativada no seu computador. Note o valor KeyEvent.VK_CAPS_LOCK sendo passado para o método. Veja o código completo para o exemplo: package arquivodecodigos; import java.awt.Toolkit; import java.awt.event.*; public class Estudos{ public static void main(String[] args){ Toolkit tk = Toolkit.getDefaultToolkit(); if(tk.getLockingKeyState(KeyEvent.VK_CAPS_LOCK)) System.out.println("A tecla Caps Lock está ativada"); else System.out.println("A tecla Caps Lock não está ativada"); System.exit(0); } } Ao executarmos este código você verá uma mensagem parecida com: A tecla Caps Lock está ativada |
Android Java ::: android.widget ::: Button |
Como detectar um clique em um botão do Android usando o evento onClick no XML de layoutQuantidade de visualizações: 2303 vezes |
Nesta dica mostrarei como podemos detectar um clique em um botão usando o evento onClick diretamente no arquivo XML de layout. No entanto, para usar este artifício, algumas regras devem ser seguidas: a) O método chamado pelo clique do botão deverá ser public e retornar void; b) O único parâmetro do método deverá conter apenas um objeto da classe View, representando a view na qual o evento onclick ocorreu. Veja um exemplo completo no qual detectamos o clique no botão e exibimos uma mensagem AlertDialog contendo apenas um botão OK. Comece analisando o XML de layout (o nome do botão foi definido no arquivo strings.xml): <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=" http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> tools:context=".MainActivity"> <Button xmlns:android=" http://schemas.android.com/apk/res/android" android:id="@+id/button_send" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/btn_enviar" android:onClick="enviarMensagem" /> </LinearLayout> Veja agora o código Java no MainActivity.java: package com.example.estudosandroid; import androidx.appcompat.app.AppCompatActivity; import android.content.DialogInterface; import android.os.Bundle; import android.view.View; import android.app.AlertDialog; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } // método público que será chamado ao clicarmos no botão public void enviarMensagem(View view) { AlertDialog dialogo = new AlertDialog.Builder(MainActivity.this).create(); dialogo.setTitle("Aviso"); dialogo.setMessage("Esta é uma mensagem de aviso"); dialogo.setButton(AlertDialog.BUTTON_NEUTRAL, "OK", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which){ dialog.dismiss(); // fecha o AlertDialog } } ); dialogo.show(); } } |
PHP ::: Dicas & Truques ::: Strings e Caracteres |
Como inverter o conteúdo de uma string usando a função strrev() do PHPQuantidade de visualizações: 87 vezes |
Em algumas situações nós precisamos inverter, ou seja, mostrar de forma contrária o conteúdo de uma palavra, frase ou texto. Para isso podemos usar a função strrev() da linguagem PHP. Ela recebe uma string e a devolve invertida. Veja o código completo para o seu uso: <html> <head> <title>Estudos PHP</title> </head> <body> <?php $frase = "Gosto de PHP"; echo $frase . "<br>"; echo strrev($frase); ?> </body> </html> Ao executar este código PHP nós teremos o seguinte resultado: Gosto de PHP PHP ed otsoG |
Java ::: Desafios e Lista de Exercícios Resolvidos ::: Arrays e Matrix (Vetores e Matrizes) |
Exercícios Resolvidos de Java - Como testar se um valor está contido em um array em JavaQuantidade de visualizações: 11335 vezes |
Pergunta/Tarefa: Escreva um programa Java GUI ou console que declara, constrói e inicializa um vetor (array unidimensional) de 5 inteiros. Em seguida peça ao usuário para informar um valor inteiro e informe se o valor lido está contido no vetor. A declaração, construção e inicialização do vetor pode ser feita da seguinte forma: // declara, constrói e inicializa um vetor de 5 inteiros int valores[] = {4, 21, 8, 120, 1}; Resposta/Solução: Veja a resolução comentada deste exercício usando Java console: package estudos; import javax.swing.JOptionPane; public class Estudos { public static void main(String[] args) { // declara, constrói e inicializa um vetor de 5 inteiros int valores[] = {4, 21, 8, 120, 1}; // vamos ler um valor inteiro int pesquisa = Integer.parseInt(JOptionPane.showInputDialog("Valor:")); // vamos verificar se o valor informado está contido no vetor boolean encontrado = false; for(int i = 0; i < valores.length; i++){ if(valores[i] == pesquisa){ encontrado = true; break; } } if(encontrado){ JOptionPane.showMessageDialog(null, "O valor está no vetor"); } else{ JOptionPane.showMessageDialog(null, "O valor não está no vetor"); } } } |
Nossas 20 dicas & truques de programação mais populares |
Delphi - Como obter o número do registro atual em um TClientDataSet do Delphi usando a propriedade RecNo |
Você também poderá gostar das dicas e truques de programação abaixo |
JavaScript - Como construir uma determinada data e hora usando o construtor do objeto Date do JavaScript JavaScript - Como retornar o nome ou tipo de exceção de um erro em JavaScript usando a propriedade name do objeto Error |
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 |