Ruby ::: Dicas & Truques ::: Strings e Caracteres |
Como acessar os caracteres individuais de uma string em Ruby usando o método slice() da classe StringQuantidade de visualizações: 7502 vezes |
O método slice() da classe String da linguagem Ruby se torna realmente útil quando precisamos acessar os caracteres individuais de uma string. Neste caso, só precisamos fornecer o índice do caractere a ser acessado e o número 1. O retorno do método é uma nova string ou nulo. Veja o exemplo a seguir: nome = "Arquivo de Códigos" # vamos acessar os caracteres individualmente usando # o método slice for i in (0..nome.length - 1) letra = nome.slice(i, 1) print letra + " " end Ao executar este código Ruby nós teremos o seguinte resultado: A r q u i v o d e C ó d i g o s |
Java ::: Desafios e Lista de Exercícios Resolvidos ::: Internet, LAN e E-Mail |
Exercícios Resolvidos de Java - Como testar se há um serviço sendo executado em uma porta de um servidor ou máquina localQuantidade de visualizações: 7587 vezes |
Pergunta/Tarefa: Este exercício resolvido é sobre Internet, Rede e E-Mail usando programação Java. Escreva um programa Java console ou GUI que peça ao usuário para informar um número de porta na máquina local. Em seguida, tente se conectar a esta porta e informe se há algum serviço sendo executado na porta informada. A entrada e saída do programa pode ser algo como: Informe o número da porta a ser pesquisada: 3306 Há um serviço na porta informada Informe o número da posta a ser pesquisada: 2040 Não há nenhum serviço na porta informada Resposta/Solução: Veja a resolução comentada deste exercício usando Java console: package estudos; import java.io.IOException; import java.net.Socket; import java.net.UnknownHostException; import java.util.Scanner; public class Main { public static void main(String[] args){ Socket socket; // vamos declarar um objeto da classe Socket String host = "localhost"; // define o nome da máquina host // vamos pedir ao usuário que informe a porta a ser pesquisada Scanner entrada = new Scanner(System.in); System.out.print("Informe o número da posta a ser pesquisada: "); int porta = Integer.parseInt(entrada.nextLine()); // vamos verificar se há algum serviço na porta informada try{ socket = new Socket(host, porta); System.out.println("Há um serviço na porta informada"); } catch (UnknownHostException e) { // não foi possível encontrar a máquina host System.out.println("Não foi possível encontrar a máquina host: " + e); } catch (IOException e) { System.out.println("Não há nenhum serviço na porta informada"); } } } Veja que, neste exercício, podemos ter o surgimento de duas exceções: UnknownHostException (a máquina informada não pôde ser encontrada) e IOException (houve erro de entrada e/ou saída). Por esta razão, é uma boa idéia envolver o código em um bloco try...catch. |
Delphi ::: Dicas & Truques ::: Bilbiotecas Estáticas (obj) e Dinâmicas (DLLs) |
Como criar DLLs usando Delphi? É possível criar DLLs para o Windows usando Delphi?Quantidade de visualizações: 13063 vezes |
As DLLs (Dynamic Link Libraries - Bibliotecas de Vínculo Dinâmico) são arquivos compilados bem similares aos arquivos .exe que estamos acostumados a criar em Delphi. Uma DLL contém rotinas, recursos ou ambos. Mas, não pode ser executada por si só, ou seja, se dermos duplo-clique em uma DLL nada acontecerá. Isso acontece porque uma DLL é desenvolvida para ser usada juntamente como outros aplicativos e/ou outras DLLs. No ambiente Windows encontramos muitas DLLs. Na verdade, o Windows e sua Win32 API é uma coleção de DLLs. Se olharmos nos diretórios System ou System32 encontraremos várias delas, incluindo kernel32.dll, gdi32.dll, user32.dll, shell32.dll, comctl32.dll, entre outras. Mas, para que servem as DLLs? É possível desenvolver aplicações Windows sem usá-las? Vamos às respostas. As DLLs existem com o propósito de compartilhar código entre aplicações. Isso quer dizer que uma mesma DLL pode estar sendo usada por vários programas ao mesmo tempo. E isso é verdade no ambiente Windows. Todos os programas de interface gráfica escritos em Delphi, C, C++, etc e que usam os componentes gráficos do Windows estão de alguma forma fazendo uso de códigos disponíveis em DLLs do sistema. Sem o aproveitamente de tais códigos os executáveis ficariam enormes, visto que cada um teria que implementar as rotinas de desenho e diretivas de criação de janelas. Ao aproveitar as funcionalidades disponíveis nas DLLs do sistema esta tarefa se torna muito mais fácil. Mas, além de usar DLLs de terceiros com códigos já prontos e devidamente testados, você também pode criar suas próprias DLLs. O motivo disso é que você pode querer compartilhar algumas de suas rotinas entre os vários aplicativos que você desenvolve. A maior vantagem disso é que, ao atualizar ou corrigir o código em uma DLL você estará certo de que todas as aplicações que fazem uso desta DLL automaticamente perceberão e tirarão proveito da atualização. Entre as vantagens do uso de DLLs podemos citar: a) Podemos compartilhar rotinas e códigos entre várias aplicativos; b) Ao mantermos boa parte de nossos códigos em DLLs nós conseguimos economizar memória e espaço em disco; c) Outros desenvolvedores poderão usar nossas rotinas e lógica mesmo sem ter acesso aos nossos códigos-fontes; d) Podemos usar códigos escritos em outras linguagens em nossos programas Delphi. Isso quer dizer que uma DLL escrita em C/C++ poderá ser usada em um programa Delphi sem qualquer problema. A prova disso é que as DLLs do Windows são escritas em C/C++. Hora de criar sua primeira DLL em Delphi. Consulte outras dicas nesta seção para aprender a fazê-lo. Para fins de compatibilidade, esta dica foi escrita usando Delphi 2009. |
Python ::: Python para Engenharia ::: Engenharia Civil - Cálculo Estrutural |
Como calcular a Força Normal Adimensional ou Força Normal Reduzida de um pilar em Python - Python para Estruturas de Concreto ArmadoQuantidade de visualizações: 488 vezes |
![]() A Força Normal Adimensional de um pilar, também chamada de Força Normal Reduzida, é representada pela letra grega ν (ni) e nos dá uma idéia da magnitude da força normal que está sendo aplicada na seção transversal de um pilar. A fórmula para o cálculo da Força Normal Adimensional pode ser representada da seguinte forma: \[\nu = \frac{N_\text{sd}}{A_\text{c} \cdot \frac{f_\text{ck}}{\gamma _\text{c}}} \] Onde: ν é a Força Normal Adimensional sem unidade; Nd é a força normal de projeto, em kN. fck é a resistência característica do concreto em kN/cm2. Para converter de Mpa para kN/cm2 nós só precisamos dividir por 10. γc é o fator de ponderação do concreto e, em geral, possui o valor 1,4. Ao dividirmos o fck pelo γc nós chegamos ao fcd, que é resistência de cálculo do concreto. Note que o valor encontrado para a força normal adimensional ν (ni) é o valor que, junto com o μ (mi), forma a dupla de fatores para o ábaco de VENTURINI que nos retornará o valor de ω (ômega) que nos ajudará a calcular a área de aço (As) do pilar. Há duas considerações importantes em relação à Força Normal Adimensional ν de um pilar: a) Se ν < 0,30 -> pode ser adequado reduzir a seção transversal do pilar. b) Se ν > 1,30 -> pode ser conveniente aumentar a seção transversal do pilar. Agora vamos ver o código Python? Note que pediremos para o usuário informar as dimensões do pilar nas direções x e y em centímetros, a carga total no pilar em kN e o fck do concreto em Mpa e retornaremos o valor da força normal adimensional: # método principal def main(): # vamos pedir as dimensões do pilar hx = float(input("Informe a dimensão do pilar na direção x (em cm): ")) hy = float(input("Informe a dimensão do pilar na direção y (em cm): ")) # vamos pedir a carga total no pilar em kN Nk = float(input("Informe a carga total no pilar (em kN): ")) # agora vamos obter o FCK do concreto em MPa fck = float(input("Informe o FCK do concreto (em MPa): ")) # vamos converter MPa para kN/cm2 fck = fck / 10 # vamos obter o menor lado do pilar (menor dimensão da seção transversal) if (hx < hy): b = hx else: b = hy # agora vamos calcular a área do pilar em centímetros quadrados area = hx * hy # a área está de acordo com a norma NBR 6118 (ABNT, 2014) if (area < 360): print("A área do pilar não pode ser inferior a 360cm2") return # vamos calcular a força normal de projeto Nd yn = 1.95 - (0.05 * b) # de acordo com a norma NBR 6118 (ABNT, 2014) Tabela 13.1 yf = 1.4 # regra geral para concreto armado Nd = yn * yf * Nk # vamos fixar o fator de ponderação do concreto em 1.4 yc = 1.4 # e agora calculamos a força normal adimensional do pilar fna = Nd / (area * (fck / yc)) # e mostramos o resultado print("\nA Força Normal Adimensional do pilar é: {0}".format(round(fna, 2))) if __name__== "__main__": main() Ao executar este código Python nós teremos o seguinte resultado: Informe a dimensão do pilar na direção x (em cm): 40 Informe a dimensão do pilar na direção y (em cm): 19 Informe a carga total no pilar (em kN): 841.35 Informe o FCK do concreto (em MPa): 30 A Força Normal Adimensional do pilar é: 0.72 |
JavaScript ::: Dicas & Truques ::: Strings e Caracteres |
Como converter uma string para letras minúsculas em JavaScript usando a função toLowerCase() do objeto StringQuantidade de visualizações: 1 vezes |
Nesta dica mostrarei como usar a função toLowerCase() do JavaScript para transformar todos os caracteres de uma palavra, frase ou texto para letras minúsculas. Esta função faz parte do objeto String. Veja um página HTML completa demonstrando o exemplo: <!doctype html> <html> <head> <title>Strings em JavaScript</title> </head> <body> <script type="text/javascript"> var frase = "Veja Esta Frase."; document.write("String original: " + frase + "<br>"); // agora vamos transformar todos os caracteres // da string para letras minúsculas frase = frase.toLowerCase(); document.write("Em letras minúsculas: " + frase + "<br>"); </script> </body> </html> Ao executar este código JavaScript nós teremos o seguinte resultado: String original: Veja Esta Frase. Em letras minúsculas: veja esta frase. |
Flutter ::: Material Library - Biblioteca Material ::: TextField |
Como clicar em um botão, obter o texto digitado em um TextField do Flutter e exibí-lo em uma AlertDialogQuantidade de visualizações: 2795 vezes |
Nesta dica mostrarei como clicar em um botão, obter o texto que o usuário digitou em um TextField e exibí-lo em uma caixa de mensagem AlertDialog. Para isso vamos tirar proveito da classe TextEditingController, que nos fornece um controller que pode ser associado a uma caixa de texto. Quando o usuário clicar no botão, nós chamamos o método setState() para atualizar uma variável com o texto do controller e em seguida exibimos uma mensagem AlertDialog com o texto digitado. Veja o exemplo completo: import 'package:flutter/material.dart'; // método principal do Dart, que inicia a aplicação void main() { runApp(MeuApp()); } class MeuApp extends StatelessWidget { // Este widget é a raiz da aplicação Flutter @override Widget build(BuildContext context) { return MaterialApp( title: 'Controle TextField', theme: ThemeData( primarySwatch: Colors.blue, ), home: TelaInicial(), ); } } // Vamos construir a view e retornar para a raiz da aplicação class TelaInicial extends StatefulWidget { TelaInicial({Key key}) : super(key: key); @override _TelaInicialState createState() => _TelaInicialState(); } class _TelaInicialState extends State<TelaInicial> { String nomeUsuario; // vai guarda o nome digitado no TextField // controler para o TextField TextEditingController nomeController = TextEditingController(); // método que nos permite obter o conteúdo digitado no TextField void obterTexto() { setState(() { // transferimos para a variável nomeUsuario o conteúdo // do texto do controller do TextField nomeUsuario = nomeController.text; }); // agora vamos mostrar o texto digitado em uma mensagem // AlertDialog showDialog<void>(context: context, barrierDismissible: false, builder: (BuildContext context) { return new AlertDialog( title: new Text("Texto Digitado"), content: new SingleChildScrollView( child: new ListBody( children: [ new Text("O texto digitado foi: $nomeUsuario"), ], ), ), actions: [ new FlatButton( child: new Text('OK'), onPressed: () { Navigator.of(context).pop(); }, ), ], ); }, ); } @override Widget build(BuildContext context) { // vamos criar uma caixa de texto chamada nomeTxt final nomeTxt = TextField( controller: nomeController, decoration: InputDecoration( border: OutlineInputBorder( borderRadius: BorderRadius.circular(10.0)), hintText: 'Digite seu nome' ), ); final btnNome = ElevatedButton( onPressed: obterTexto, child: Text('Clique Aqui'), ); return Scaffold( appBar: AppBar( title: Text("O Widget TextField"), ), body: Center( child: Container( child: Padding( padding: const EdgeInsets.all(20.0), child: Column( children: <Widget>[ // a caixa de texto TextField vai aqui nomeTxt, // o botão vai aqui btnNome, ], ), ), ), ), ); } } |
Java ::: Desafios e Lista de Exercícios Resolvidos ::: Laços de Repetição |
Exercícios Resolvidos de Java - Como testar se um número é perfeito usando JavaQuantidade de visualizações: 815 vezes |
Pergunta/Tarefa: Escreva um programa Java que pede para o usuário informar um número inteiro e informa se este número é um número perfeito. Um número perfeito é aquele cuja soma dos seus divisores, exceto ele próprio, é igual ao número. Por exemplo, o número 6 é perfeito, pois 1 + 2 + 3 = 6. Sua saída deverá ser parecida com: Informe um número inteiro: 6 O número informado é um número perfeito. Veja a resolução completa para o exercício em Java, comentada linha a linha: package estudos; import java.util.Scanner; public class Estudos{ public static void main(String[] args){ int numero; // número informado pelo usuário int soma = 0; // vai guardar a soma dos dígitos // para efetuar a leitura da entrada do usuário Scanner entrada = new Scanner(System.in); // vamos pedir para o usuário informar o valor inteiro System.out.print("Informe um número inteiro: "); // lê o número informado numero = Integer.parseInt(entrada.nextLine()); // um laço que começa em 1 e até o número informado - 1 for(int i = 1; i < numero; i++){ // o número é divisível pelo valor de i? if(numero % i == 0){ soma = soma + i; // aumenta a soma } } // a soma é igual ao número informado? if(soma == numero){ System.out.println("O número informado é um número perfeito."); } else{ System.out.println("O número informado não é um número perfeito."); } } } |
Python ::: PyQt GUI Toolkit ::: QPushButton |
Como criar um botão em Python PyQt usando a classe QPushButtonQuantidade de visualizações: 1243 vezes |
Os botões QPushButton são os controles mais básicos e comuns em aplicações GUI PyQt. Eles são criados a partir da classe QPushButton. Veja a sua posição na hierarquia de classes dos PyQt:QObject, QPaintDevice QWidget QAbstractButton QPushButton QCommandLinkButton Veja um trecho de código no qual criamos um botão QPushButton e o colocamos em uma janela QWidget: # vamos importar os módulos necessários import sys from PyQt6.QtCore import * from PyQt6.QtGui import * from PyQt6.QtWidgets import * # método que mostrará a janela principal def mostrar_janela_principal(): # cria uma instância da classe QApplication app = QApplication(sys.argv) # criamos a janela principal janela = QWidget() # definimos o título da janela janela.setWindowTitle("Cadastro de Clientes") # definimos as coordenadas e as dimensões da janela janela.setGeometry(100, 100, 500, 300) # vamos criar um botão QPushButton botao = QPushButton("Cadastrar", janela) # definimos a localização do botão botao.move(10, 10) # tornamos a janela visível janela.show() # e executamos a aplicação sys.exit(app.exec()) if __name__== "__main__": mostrar_janela_principal() Ao executar este código Python PyQt nós teremos o seguinte resultado: ![]() |
C++ ::: Desafios e Lista de Exercícios Resolvidos ::: Laços de Repetição |
Exercícios Resolvidos de C++ - Como calcular e exibir os 50 primeiros números primos em C++Quantidade de visualizações: 9854 vezes |
Pergunta/Tarefa: Um inteiro é um número primo se ele for divisível somente por 1 e por ele mesmo. Assim, 2, 3, 5 e 7 são primos, enquanto 4, 6, 8 e 9 não são. Note que o número 1 não é primo. Escreva um programa C++ que usa um laço for, while ou do...while para calcular e exibir os 50 primeiros números primos. A saída do programa deverá ser parecida com: 50 primeiros números primos: 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97 101 103 107 109 113 127 131 137 139 149 151 157 163 167 173 179 181 191 193 197 199 211 223 227 229 Veja a resolução comentada deste exercício em C++: #include <cstdlib> #include <iostream> #include <iomanip> using namespace std; int main(int argc, char *argv[]){ int quantidade = 50; // quantidade de números primos int contador = 0; // quantidade de números primos encontrados int numero = 0; // inteiro inicial // Lembre-se! O número 1 não é primo cout << quantidade << " primeiros numeros primos:\n" << endl; // laço while será executado até encontrar os 50 primeiros números primos while(contador < quantidade){ bool primo = true; // se o valor de i for 7, a variável j do laço contará // de 2 até 7 / 2 (divisão inteira), ou seja, 3. Se o // módulo de 7 por qualquer um dos valores neste intervalo // for igual a 0, então o número não é primo for(int j = 2; j <= (numero / 2); j++){ if(numero % j == 0){ primo = false; // não é primo break; } } if((primo) && (numero > 1)){ cout << setw(6) << numero; contador++; // encontramos um número primo if(contador % 10 == 0){ cout << "\n"; } } numero++; } cout << "\n\n"; system("PAUSE"); return EXIT_SUCCESS; } |
C# ::: Dicas & Truques ::: Validação de Dados |
C# Windows Forms - Como validar o conteúdo de uma caixa de texto usando o evento Validating da classe ControlQuantidade de visualizações: 17660 vezes |
O evento Validating (disponível para todas as classes que herdam de System.Windows.Forms.Control) é muito útil quando precisamos verificar a validade dos valores inseridos nos controle Windows Forms. Neste exemplo mostrarei como usá-lo para validar o conteúdo de um TextBox. Aqui veremos como verificar se o conteúdo inserido é um valor inteiro válido. Tudo começa com a propriedade CausesValidation da classe Control. Esta propriedade nos permite definir se o controle provocará uma validação de seus dados quando o mesmo estiver prestes a perder o foco, ou seja, o usuário começara a interagir com outro controle após inserir dados no controle alvo da validação. Se o valor desta propriedade for true a validação ocorrerá. Em seguida voltamos nossa atenção para o evento Validating (também declarado originalmente na classe Control). Este evento é disparado quando a propriedade CausesValidation é true e o controle está prestes a perder o foco (o usuário está saindo para interagir com outro controle). Veja a ordem dos eventos quando estamos saindo do controle usando o teclado: a) Leave b) Validating c) Validated d) LostFocus Se estivermos saindo do controle usando o mouse (clicando em outro controle), a ordem é: a) Leave b) Validating c) Validated Veja um exemplo do uso do evento Validating de um TextBox: private void textBox1_Validating(object sender, CancelEventArgs e){ MessageBox.Show("Meu conteúdo pode ser validado agora"); } Experimente executar este código, coloque o foco na caixa de texto e depois "saia" para outro componente. Você verá a caixa de mensagem ser exibida. O tratador de evento Validating recebe um objeto da classe CancelEventArgs. Esta classe possui apenas uma propriedade chamada Cancel. Se o valor desta propriedade for definido como true, o evento Validating (e todos que viriam após ele) é cancelado. Isso faz com que o foco fique preso no controle até que o usuário informe o valor correto. Veja: private void textBox1_Validating(object sender, CancelEventArgs e){ // vamos verificar se a caixa de texto contém um valor inteiro válido try{ // vamos tentar converter o texto recebido em um valor inteiro int valor = Int32.Parse(textBox1.Text); MessageBox.Show("Validação ocorreu com sucesso!"); } catch(FormatException fe){ // não conseguimos converter o texto em um valor inteiro MessageBox.Show("Valor inválido! Tente novamente! " + fe.Message.ToString()); // limpamos a caixa de texto textBox1.Text = ""; // e "prendemos" o foco na caixa de texto e.Cancel = true; } } Neste trecho de código nós usamos um bloco try...catch para tentar converter o texto do TextBox em um valor inteiro. Se houver falha na conversão nós avisamos o usuário, limpamos a caixa de texto e forçamos o usuário a fazer a correção. Para finalizar, entra em cena o evento Validated. Este evento é disparado imediatamente após o evento Validating finalizar sua parte e é um bom lugar para avisarmos o usuário sobre o sucesso da validação ou remover quaisquer efeito visual que tenhamos inserido durante o processo de validação. Veja: private void textBox1_Validating(object sender, CancelEventArgs e){ // vamos verificar se a caixa de texto contém um valor inteiro válido try{ // vamos tentar converter o texto recebido em um valor inteiro int valor = Int32.Parse(textBox1.Text); } catch(FormatException fe){ // não conseguimos converter o texto em um valor inteiro MessageBox.Show("Valor inválido! Tente novamente! " + fe.Message.ToString()); // limpamos a caixa de texto textBox1.Text = ""; // e "prendemos" o foco na caixa de texto e.Cancel = true; } } private void textBox1_Validated(object sender, EventArgs e){ MessageBox.Show("Validação ocorreu com sucesso!"); } Veja que tudo que fizemos aqui foi remover a mensagem de sucesso de validação do evento Validating para o evento Validated. |
Nossas 20 dicas & truques de programação mais populares |
Java - Como carregar uma imagem em um BufferedImage do Java usando o método read() da classe ImageIO |
Você também poderá gostar das dicas e truques de programação abaixo |
AutoCAD .NET API C# - Como selecionar uma polilinha no AutoCAD e mostrar as coordenadas de suas vértices usando a AutoCAD .NET C# API Java - Como transformar um StringBuffer em uma String usando o método toString() da classe StringBuffer QGIS - Como retornar o título do projeto do QGIS usando PyQGIS e a função title() da classe QgsProject |
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 |