![]() |
|||||
|
Delphi ::: Data Access Controls (Controles de Acesso a Dados) ::: TClientDataSet |
Como tornar o TClientDataSet do Delphi somente leitura usando a propriedade ReadOnlyQuantidade de visualizações: 11811 vezes |
Em algumas situações gostaríamos que um TClientDataSet fosse somente leitura, ou seja, não queremos permitir inserção, atualização ou exclusão dos dados do dataset. Para isso podemos usar a propriedade ReadOnly. Se seu valor for True, os dados do TClientDataSet serão apenas para leitura. Se o valor for False, os dados podem ser modificados e/ou novos dados podem ser inseridos no dataset. O valor padrão é False. Em tempo de design a propriedade ReadOnly do TClientDataSet pode ser ajustada selecionando-se o componente no formulário e acessando o Object Inspector. Em tempo de execução esta propriedade pode ser ajustada por meio do seguinte trecho de código: procedure TForm3.Button3Click(Sender: TObject); begin // vamos tornar o TClientDataSet somente leitura ClientDataSet1.ReadOnly := True; end; Se necessário, podemos obter o valor desta propriedade em tempo de execução da seguinte forma: procedure TForm3.Button3Click(Sender: TObject); begin // vamos verificar se o TClientDataSet é somente leitura if ClientDataSet1.ReadOnly then ShowMessage('O ClientDataSet é somente leitura') else ShowMessage('O ClientDataSet NÃO é somente leitura') end; Ao executarmos este código e clicarmos no botão teremos uma mensagem parecida com: "O ClientDataSet NÃO é somente leitura". É importante observar que se tentarmos efetuar alguma operação que modifica o conteúdo de um TClientDataSet somente leitura nós teremos uma exceção do tipo: Project Project2.exe raised exception class EDatabaseError with message 'ClientDataSet1': Cannot modify a read-only dataset'. Quando ajustamos o valor da propriedade ReadOnly para True, automaticamente a propriedade CanModify do dataset é ajustada para False. Importante: Mesmo que o valor da propriedade ReadOnly seja False, os usuários ainda podem ser impedidos de modificar os dados de um client dataset se este obtém seus dados a partir de um provider (por exemplo: TDataSetProvider). A propriedade Options do provider pode limitar se os dados podem ser editados e, se puderem, os tipos de alterações permitidos. Esta dica foi escrita e testada no Delphi 2009. |
Java ::: Dicas & Truques ::: Matemática e Estatística |
Como arredondar um número para cima em Java usando a função ceil() da classe MathQuantidade de visualizações: 10014 vezes |
Em várias situações nós precisamos arredondar um valor real para cima, ou seja, para o valor inteiro maior ou igual ao argumento fornecido. Para isso nós podemos usar a função ceil() da classe Math da linguagem Java. Esta função recebe um valor double e retorna um outro valor inteiro (como double) maior ou igual ao argumento fornecido. Veja um exemplo Java completo no qual pedimos para o usuário informar um valor com casas decimais e devolvemos o valor arredondado para cima: package estudos; import java.util.*; public class Estudos { public static void main(String[] args) { // para ler a entrada do usuário Scanner entrada = new Scanner(System.in); // vamos pedir para o usuário informar um número // real com casas decimais System.out.print("Informe um número com casas decimais: "); // vamos ler o número informado double a = Double.parseDouble(entrada.nextLine()); // agora vamos arredondar o valor para cima double b = Math.ceil(a); // e mostramos o resultado System.out.println("O número arredondado para cima é: " + b); } } Ao executar este código Java nós teremos o seguinte resultado: Informe um número com casas decimais: 6.31 O número arredondado para cima é: 7.0 |
Python ::: Dicas & Truques ::: Tupla (Tuple) |
Python para iniciantes - Como usar o tipo de dados tuple da linguagem PythonQuantidade de visualizações: 9259 vezes |
Uma tupla (tuple) é similar a uma lista (list), com a exceção de que uma tupla não pode ser modificada, ou seja, é imutável. Veja como criar uma tupla contendo cinco elementos: # Cria uma tupla valores = 4, 76, 2, 98, 4 # Exibe o valor do segundo elemento print valores[1] # Exibe todos os elementos for valor in valores: print valor, Veja agora o que acontece quando tentamos alterar o valor de um dos elementos da tupla: valores[4] = 50 Traceback (most recent call last): File "tuplas.py", line 19, in <module> valores[4] = 50 TypeError: 'tuple' object does not support item assignment Contudo, a variável do tipo tupla pode ser alterada para apontar para uma tupla diferente. Veja: # Cria duas tuplas valores = 4, 76, 2, 98, 4 letras = 'A', 'B', 'C' # Atribue os elementos de letras a valores valores = letras # Exibe o resultado print valores É comum colocar os elementos de uma tupla entre parênteses. Assim, a tupla abaixo é perfeitamente legal: valores = (4, 76, 2, 98, 4) Embora não muito provável, se precisarmos criar uma tupla de apenas um elemento, devemos inserir uma vírgula após ele. Veja: valores = (4,) Tuplas podem conter elementos de diferentes tipos de dados. Veja: # Cria uma tupla contendo tipos diferentes # de dados cliente = (3, "Osmar J. Silva", "Goiânia", "GO", 35) # Exibe o valor do 4º elemento estado = cliente[3] print estado |
Python ::: wxPython ::: Eventos e Tratadores de Eventos |
Como tratar o evento wx.EVT_MOVE em suas aplicações wxPython - Interfaces gráficas no PythonQuantidade de visualizações: 214 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() |
Python ::: Dicas & Truques ::: Matemática e Estatística |
Como testar se um número é primo em PythonQuantidade de visualizações: 3991 vezes |
O Número Primo é o número maior que 1 e que só pode ser dividido por 1 e por ele mesmo, ou seja, números primos não podem ser divididos por outros números, a não ser por ele mesmo e pelo número 1. Dessa forma, 2, 3, 5, 7, 11, 13, 17, etc, são todos números primos. É importante observar que 0 e 1 não são números primos, e que o número 2 é o único número primo par. Veja agora um código Python completo que pede para o usuário informar um número inteiro positivo e mostra uma mensagem indicando se o número informado é primo ou não: def main(): primo = True # vamos assumir que o número é primo # vamos solicitar um número inteiro positivo numero = int(input("Informe um número inteiro positivo: ")) # o número é negativo? if numero < 0: print("Número inválido.") # é 0 ou 1? elif (numero == 0) or (numero == 1): print("Número válido, mas não é primo.") # passou até aqui. Vamos testar se o número é primo else: for i in range(2, int((numero / 2))): # se passar no teste, não é primo if numero % i == 0: primo = False # recebe false break if primo: print("O número informado é primo") else: print("O número informado não é primo") if __name__== "__main__": main() Ao executar este código Python nós teremos o seguinte resultado: Informe um número inteiro positivo: 9 O número informado não é primo |
Java ::: Fundamentos da Linguagem ::: Modificadores |
Regras importantes sobre o uso de modificadores na linguagem JavaQuantidade de visualizações: 7634 vezes |
1) Uma declaração de método ou variável pode conter somente um destes modificadores de acesso: public, protected ou private. Na ausência de um destes, o acesso será de pacote. 2) Classes não podem ser declaradas abstract e final simultâneamente. 3) Métodos abstratos não podem ser declarados private, static, final, native, strictfp ou synchronized. 4) Métodos não podem ser declarados native e strictfp ao mesmo tempo. 5) Métodos abstract e native não possuem corpo. Ex: abstract void inserir(); native void obterDados(); 6) Uma classe que contenha métodos abstratos deve ser declarada como abstrata. 7) Membros final não podem ser volatile. |
Portugol ::: Desafios e Lista de Exercícios Resolvidos ::: Arrays e Matrix (Vetores e Matrizes) |
Exercícios Resolvidos de Portugol - Faça um algoritmo em Portugol que leia 9 números inteiros, guarde-os em uma matriz 3x3 e mostre os números paresQuantidade de visualizações: 1113 vezes |
Pergunta/Tarefa: Faça um algoritmo em Portugol que leia 9 números inteiros e guarde-os em uma matriz 3x3. Imprima a matriz no formato tabular, usando a melhor formatação que você conseguir. Em seguida, percorra a matriz novamente e imprima somente os números que são pares, todos na mesma linha e separados por espaço. Sua saída deverá ser parecida com: Linha 1 e coluna 1: 8 Linha 1 e coluna 2: 1 Linha 1 e coluna 3: 5 Linha 2 e coluna 1: 3 Linha 2 e coluna 2: 9 Linha 2 e coluna 3: 30 Linha 3 e coluna 1: 7 Linha 3 e coluna 2: 23 Linha 3 e coluna 3: 10 Valores na matriz 8 1 5 3 9 30 7 23 10 Os valores pares são: 8 30 10 Veja a resolução completa para o exercício em Portugol, comentada linha a linha (fiz a resolução no Portugol Webstudio): // Um algoritmo que lê uma matriz 3x3 programa { funcao inicio() { // variáveis usadas na resolução do problema inteiro matriz[3][3] inteiro i, j // vamos pedir para o usuário informar os valores // dos elementos da matriz, uma linha de cada vez para (inteiro i = 0; i < 3; i++) { para (inteiro j = 0; j < 3; j++) { escreva("Linha ", (i + 1), " e coluna ", (j + 1), ": ") leia(matriz[i][j]) } } // vamos mostrar a matriz da forma que ela foi informada escreva("\nValores na matriz:\n\n") para (inteiro i = 0; i < 3; i++) { para (inteiro j = 0; j < 3; j++) { escreva(matriz[i][j], " ") } // passa para a próxima linha da matriz escreva("\n") } // agora vamos percorrer a matriz novamente e mostrar // apenas os valores pares escreva("\nOs valores pares são: ") para (inteiro i = 0; i < 3; i++) { para (inteiro j = 0; j < 3; j++) { // é um número par? se (matriz[i][j] % 2 == 0) { escreva(matriz[i][j], " ") } } } } } |
C# ::: Dicas & Truques ::: Strings e Caracteres |
Como retornar uma substring de uma string C# usando o método Substring() da classe String - C# para iniciantesQuantidade de visualizações: 32916 vezes |
Esta dica mostra como obter parte de uma palavra, frase ou texto, ou seja, extrair uma substring a partir de uma string. Isso pode ser feito por meio da função Substring() da classe String da linguagem C#. Veja que temos que fornecer o índice do primeiro caractere (começando em 0) e a quantidade de caracteres que serão obtidos. Veja o código completo para o exemplo: using System; namespace Estudos{ class Program{ static void Main(string[] args) { string frase = "Gosto muito de C#"; Console.WriteLine("A frase é: " + frase); // obtém a substring "muito" string substring = frase.Substring(6, 5); Console.WriteLine("Substring obtida: " + substring); Console.WriteLine("\n\nPressione uma tecla para sair..."); Console.ReadKey(); } } } Ao executar este código nós teremos o seguinte resultado: A frase é: Gosto muito de C# Substring obtida: muito |
PHP ::: Dicas & Truques ::: Data e Hora |
Como construir uma data usando a função mktime() do PHPQuantidade de visualizações: 103 vezes |
A forma mais comum de se construir uma data e hora no PHP é por meio da função mktime(). Esta função recebe as horas e a data na sequência horas, minutos, segundos, mês, dia, ano e retorna um timestamp Unix, que é a quantidade de segundos desde 31/12/1969 - 21:00:00 (fuso horário brasileiro). Veja um trecho de código que constrói a data 13/05/2020 à meia-noite: <html> <head> <title>Estudos PHP</title> </head> <body> <?php // construir a data 13/05/2020 // se quiser fornecer as horas o formato é: // hora, minuto, segundo $timestamp = mktime(0, 0, 0, 05, 13, 2020); echo "A data é: " . date('d/m/Y', $timestamp); ?> </body> </html> Ao executar este código nós teremos o seguinte resultado: A data é: 13/05/2020 |
Java ::: Coleções (Collections) ::: ArrayList |
Como passar uma ArrayList para um método Java - Como escrever um método Java que recebe uma ArrayListQuantidade de visualizações: 12229 vezes |
Em algumas situações precisamos passar um objeto da classe ArrayList para um método Java. Esta dica mostra como isso pode ser feito:package estudos_java; import java.util.*; public class Estudos{ public static void main(String[] args){ // vamos criar um ArrayList, adicionar alguns elementos // e passá-lo para um método ArrayList<String> nomes = new ArrayList<>(); nomes.add("Osmar J. Silva"); nomes.add("Fernanda de Castro"); nomes.add("José de Oliveira"); // vamos passar o ArrayList para o método imprimir(nomes); System.exit(0); } // um método que recebe um ArrayList e exibe o // o valor de seus elementos public static void imprimir(ArrayList<String> lista){ for(int i = 0; i < lista.size(); i++){ System.out.println(lista.get(i)); } } } Ao executar este código Java nós teremos o seguinte resultado: Osmar J. Silva Fernanda de Castro José de Oliveira |
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 |