C# ::: Windows Forms ::: TextBox

Como contar as palavras em um TextBox de múltiplas linhas do C# Windows Forms

Quantidade de visualizações: 13983 vezes
Em algumas situações nós precisamos retornar a quantidade de palavras digitadas em um campo TextBox de múltiplas linhas do C# Windows Forms. O trecho de código abaixo mostra como isso pode ser feito.

Note como usei os métodos da classe String para alcançar o objetivo. Veja o código C# completo disparado a partir do clique de um botão Button:

/*
 Este exemplo mostra como obter a quantidade de
 palavras em um TextBox. 

 Veja que usamos a técnica de contar as palavras
 contidas em um array após retirar as quebras de
 linhas e espaços duplicados na string. 
*/
    
private void button1_Click(object sender, EventArgs e){
  // Obtém o texto da caixa de texto
  string texto = textBox1.Text.Trim();

  // Remove as quebras de linhas substituindo-as por
  // espaços
  texto = texto.Replace(Environment.NewLine, " ");

  // remove os espaços em excesso
  while(texto.IndexOf("  ") >= 0){
    texto = texto.Replace("  ", " ");
  }

  // Obtém um array de palavras
  string[] palavras = texto.Split(" ");

  // Obtém a quantidade de palavras
  int quant = palavras.Length;

  // Exibe o resultado
  MessageBox.Show("O TextBox contém " + quant + 
    " palavras.");
}



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

Como usar o gerenciador de layout GridBagLayout em suas aplicações Java Swing

Quantidade de visualizações: 12600 vezes
O gerenciador de layout GridBagLayout é um dos mais complexos e mais flexíveis. Embora possa parecer, esta classe não é uma sub-classe de GridLayout, como mostra sua posição na hierarquia de classes Java:

java.lang.Object
  java.awt.GridBagLayout

Esta classe implementa as interfaces LayoutManager, LayoutManager2 e Serializable.

A vantagem do gerenciador de layout GridBagLayout em relação ao GridLayout, é que, com o GridBagLayout nós podemos fazer com que os componentes nas linhas e colunas possam ter diferentes tamanhos e às vezes ocupar múltiplas linhas e colunas.

O trecho de código abaixo mostra a forma mais simples de se criar um GridBagLayout. Veja que os botões são arranjados de forma horizontal na janela. É claro que sem os ajustes necessários, não tiramos muito proveito do uso deste gerenciador (mas isso será visto em outras dicas dessa seção):

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());

    // adiciona componentes à janela
    add(new JButton("Botão 1"));
    add(new JButton("Botão 2"));
    add(new JButton("Botão 3"));
    add(new JButton("Botão 4"));
    
    setSize(350, 150);
    setVisible(true);    
  }

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

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




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

Como trabalhar com strings em Ruby

Quantidade de visualizações: 8334 vezes
Strings em Ruby são usadas para representar palavras, frases e textos e são bem parecidas com strings em outras linguagens dinâmicas, tais como Perl, Python e PHP. Além disso, strings em Ruby são dinâmicas, mutáveis e flexíveis.

Podemos declarar e definir uma variável do tipo string em Ruby da seguinte forma:

nome = "Osmar J. Silva"
puts nome

Em ruby, strings são objetos da classe String. Isso quer dizer que podemos efetuar chamadas à uma grande variedade de métodos desta classe a partir de qualquer variável do tipo string. Veja um exemplo:

nome = "Osmar"
puts nome.length


Este exemplo exibirá a quantidade de caracteres contidos na string nome.

Strings em Ruby podem estar contidas em aspas duplas ou aspas simples:

nome = "Osmar J Silva"
puts(nome)

nome = 'Osmar J Silva'
puts(nome)

A diferença é que, quando usamos aspas duplas, podemos codificar dados binários dentro da string, assim como usar "\n" para provocar quebras de linha. Quando usamos aspas simples, podemos usar apenas "\'" para exibir uma aspa simples e "\\" para exibir uma barra invertida.


C# ::: Windows Forms ::: ListBox

Como ordenar alfabeticamente os itens de uma ListBox do C# Windows Forms usando a propriedade Sorted

Quantidade de visualizações: 10488 vezes
Os itens de uma ListBox podem ser ordenados alfabeticamente definindo-se o valor True para a propriedade Sorted. Em tempo de execução este propriedade pode ser alterada da seguinte forma:

private void button2_Click(object sender, EventArgs e){
  // Ordena os itens da lista alfabeticamente
  listBox1.Sorted = true;
}

Esta propriedade pode também ser obtida enquanto o programa estiver em execução. Veja um trecho de código no qual clicamos em um botão e exibimos uma mensagem com o valor da propriedade Sorted da ListBox:

private void button1_Click(object sender, EventArgs e) {
  // Obtém o valor da propriedade Sorted
  MessageBox.Show("Valor da propriedade Sorted: " +   listBox1.Sorted);
}

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

Valor da propriedade Sorted: True


Java ::: Desafios e Lista de Exercícios Resolvidos ::: Métodos, Procedimentos e Funções

Métodos - Exercícios Resolvidos de Java - Ex. 4 - Um método estático que recebe dois números inteiros e retorna o maior deles

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

Escreva um método Java que recebe dois números inteiros e retorna o maior deles. Este método deverá ter a seguinte assinatura:

public static int maior(int a, int b){
  // sua implementação aqui
}
Este método deverá, obrigatoriamente, estar na classe principal (aquela que contém o método main()). Peça ao usuário para fornecer dois números inteiros e use o método desenvolvido para retornar o maior deles.

Sua saída deverá ser parecida com:



Resposta/Solução:

Veja a resolução comentada deste exercício usando Java console:

package estudos;

import java.util.Scanner;

public class Estudos {
  public static void main(String[] args) {
    Scanner entrada = new Scanner(System.in);
    
    // vamos solicitar que o usuário informe dois numeros inteiros
    System.out.print("Informe o primeiro número: ");
    int num1 = Integer.parseInt(entrada.nextLine());
    System.out.print("Informe o segundo número: ");
    int num2 = Integer.parseInt(entrada.nextLine());
    
    // obtém o número maior
    int numeroMaior = maior(num1, num2);
    System.out.println("O numero maior é: " + numeroMaior);
    
    System.out.println("\n");
  }
  
  // um método estático que recebe dois números inteiros e retorna o maior deles
  public static int maior(int a, int b){
    if(a > b){
      return a;  
    }
    else{
      return b;  
    }
  }
}



Python ::: PyQt GUI Toolkit ::: QMainWindow

Como centralizar uma janela QMainWindow do PyQt

Quantidade de visualizações: 257 vezes
Nesta dica mostrarei como podemos centralizar a janela principal de nossa aplicação PyQt. Note que esta janela principal, na maioria das vezes, é representada por uma instância da classe QMainWindow.

Veja o código completo para o exemplo, já atualizado para o PyQt6:

# vamos importar os módulos necessários
import sys
from PyQt6.QtCore import *
from PyQt6.QtGui import *
from PyQt6.QtWidgets import *
 
# vamos criar uma classe que herda de QMainWindow
class JanelaPrincipal(QMainWindow):
  # construtor da classe
  def __init__(self):
    super().__init__()
 
    # definimos o título da janela 
    self.setWindowTitle("Cadastro de Produtos")
     
    # vamos definir as dimensões da janela
    self.resize(600, 420)

    # vamos obter a geometria do frame da nossa janela
    geometria_frame = self.frameGeometry()

    # acessamos a geometria da monitor e obtemos seu centro
    ponto_central = self.screen().availableGeometry().center()

    # movemos o retângulo obtido anteriormente para o centro da tela
    geometria_frame.moveCenter(ponto_central)
    
    # e finalmente movemos nossa janela para este ponto
    self.move(geometria_frame.topLeft())

if __name__== "__main__":
  # cria a aplicação
  app = QApplication(sys.argv)
 
  # cria a janela principal e a coloca visível
  janela_principal = JanelaPrincipal()
  janela_principal.show()
 
  # executa a aplicação
  app.exec()



C# ::: Windows Forms ::: TextBox

C# Windows Forms Avançado - Como rolar as linhas de um TextBox para o fundo (parte inferior) usando a API do Windows

Quantidade de visualizações: 6946 vezes
Em algumas situações gostaríamos de rolar para baixo (fundo) o conteúdo de um TextBox de múltiplas. Para isso podemos usar a API do Windows, mais especificamente a mensagem WM_VSCROLL com o valor SB_BOTTOM para seu parâmetro wParam. O valor do parâmetro lParam é zero.

Veja um trecho de código que rola para baixo o conteúdo de um TextBox. Antes de executar este exemplo, tenha a certeza de ter um TextBox de múltiplas, com barras de rolagem e conteúdo que force o aparecimento das barras de rolagem.

Comece adicionando a linha:

using System.Runtime.InteropServices;

na seção de usings do seu formulário ou classe. Em seguida adicione o trecho de código abaixo no corpo da classe, como um método:

[DllImport("user32.dll", EntryPoint = "SendMessage", 
  CharSet = CharSet.Auto, SetLastError = true)]
private static extern IntPtr SendMessage(IntPtr hWnd, uint Msg, 
  IntPtr wParam, IntPtr lParam);

Finalmente coloque o código abaixo no evento Click de um botão:

private void button2_Click(object sender, EventArgs e){
  // antes de executar este exemplo certifique-se de que
  // a propriedade Multiline do TextBox esteja definida
  // como true e a propriedade ScrollBars contenha o valor
  // Vertical ou Both
  textBox1.Multiline = true;
  textBox1.ScrollBars = ScrollBars.Vertical;
    
  // constante para a mensagem WM_VSCROLL
  const uint WM_VSCROLL = 0x115;
  // constante para o parâmetro wParam
  const int SB_BOTTOM = 7;
  
  // handle para a caixa de texto
  IntPtr handle = textBox1.Handle;
  IntPtr wParam = (IntPtr)SB_BOTTOM;
  IntPtr lParam = IntPtr.Zero;
  
  // vamos fazer com que o TextBox role para o fundo (parte inferior)
  SendMessage(textBox1.Handle, WM_VSCROLL, wParam, lParam);
}



C ::: Desafios e Lista de Exercícios Resolvidos ::: C Básico

Exercícios Resolvidos de C - Como testar se um número é potência de dois usando C

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

Escreva um programa C contendo um método que recebe um número inteiro e retorna um valor boolean indicando se o valor informado é potência de dois.

Sua saída deverá ser parecida com:

Informe um valor inteiro: 8
O valor 8 é potência de dois
Informe um valor inteiro: 34
O valor 34 não é potência de dois
Informe um valor inteiro: 64
O valor 64 é potência de dois
Resposta/Solução:

Veja a resolução comentada deste exercício usando C:

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

// função que recebe um número inteiro e informe se ele é
// potência de dois
int is_potencia_dois(int n){
  // usamos o operador AND de bits para verificar se n AND n-1
  // é igual a 0
  return (n > 0) && (n & (n - 1)) == 0;
}

int main(int argc, char *argv[]){
  // variáveis usadas para 
  int valor;
  
  setlocale(LC_ALL,""); // para acentos do português
 
  // vamos pedir para o usuário informar um valor inteiro
  printf("Informe um valor inteiro: ");
  scanf("%d", &valor);
    
  // vamos testar se o número informado é potência de dois
  if(is_potencia_dois(valor)){
    printf("O valor %d é potência de dois", valor);
  }
  else{
    printf("O valor %d não é potência de dois", valor);
  }
 
  printf("\n\n");
  system("PAUSE");	
  return 0;
}



PHP ::: Fundamentos da Linguagem ::: Métodos, Procedimentos e Funções

Como usar funções e variáveis globais em PHP

Quantidade de visualizações: 38691 vezes
Por padrão, variáveis definidas a nível de página, ou seja, variáveis globais, não podem ser acessadas a partir de uma função. Veja um exemplo:

<?
  // variável global
  $usuario = "Osmar";
  
  function exibir(){
    echo $usuario; // acessa a variável gloal
  }
  
  // chama a função
  exibir();
?>

Ao executar este exemplo teremos o seguinte resultado:

Notice: Undefined variable: usuario in 
xxx/estudos.php on line 6


Para contornar este problema, temos que empregar a palavra-chave global seguida pelo nome da variável global que queremos acessar. Veja:

<?
  // variável global
  $usuario = "Osmar";
  
  function exibir(){
    // permite acesso à variável global
    global $usuario;
	
    echo $usuario; // acessa a variável gloal
  }
  
  // chama a função
  exibir();
?>

Ao executarmos o código novamente, percebemos que o resultado é o esperado. Outra forma de acessar variáveis globais a partir de uma função é usando $GLOBALS. Veja:

<?
  // variável global
  $usuario = "Osmar";
  
  function exibir(){
    echo $GLOBALS['usuario']; // acessa a variável global
  }
  
  // chama a função
  exibir();
?>



Dart ::: Dicas de Estudo e Anotações ::: Estruturas de Controle

Como usar o laço for da linguagem Dart

Quantidade de visualizações: 4232 vezes
Em algumas situações os nossos códigos precisam executar repetidas vezes uma ou mais instruções. Para isso a linguagem Dart, assim como C, C++, Java, Python, JavaScript, Delphi, etc, nos oferece o laço for, ou loop for.

Este laço é usado quando sabemos exatamente a quantidade de vezes que a instrução (ou grupo de instruções) deverá ser repetida.

Veja um exemplo no qual usamos este laço para contar de 1 até 10:

void main() {
  for (int i = 1; i <= 10; i++) {
    print('${i}');
  }
}

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

1
2
3
4
5
6
7
8
9
10

Veja que o laço for em Dart é composto de três partes:

a) Inicialização da variável de controle;
b) O teste de continuidade;
c) O incremento ou decremento da variável de controle.

Como a execução do laço se inicia no teste de continuidade, é possível termos um laço for que nunca será executado. Veja:

void main() {
  for (int i = 1; i > 5; i++) {
    print('${i}');
  }
}

Execute este código e perceberá que nenhum valor é impresso. Isso aconteceu porque o teste condicional retornou um valor falso, impedindo até mesmo a primeira execução do laço.

Veja agora um laço for que conta de 10 até 1:

void main() {
  for (int i = 10; i >= 1; i--) {
    print('${i}');
  }
}

Para finalizar em grande estilo, veja um laço for que pede para o usuário digitar 5 idades e, em seguida, mostra a média das idades lidas:

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

void main() {
  int soma = 0;
  // vamos solicitar 5 idades
  for (int i = 0; i < 5; i++) {
    stdout.write("Digite uma idade: ");
    int idade = int.parse(stdin.readLineSync());
    soma = soma + idade;
  }

  // Vamos mostrar a média das idades
  double media = soma / 5;
  print("A média das idades é $media.");
}

A execução deste código mostrará o seguinte resultado:

c:\estudos_dart>dart laco_for.dart
Digite uma idade: 18
Digite uma idade: 21
Digite uma idade: 34
Digite uma idade: 50
Digite uma idade: 9
A média das idades é 26.4.


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