![]() |
|||||
![]() Planilha Web - Planilhas e Calculadoras online para estudantes e profissionais de Engenharia Civil, Engenharia Elétrica e Engenharia Mecânica. |
|||||
|
PHP ::: Dicas & Truques ::: Data e Hora |
Datas e horas em PHP - Como saber se um determinado ano é bissexto usando PHPQuantidade de visualizações: 173 vezes |
Nesta dica veremos como é possível usar a função date() da linguagem PHP para verificar se um determinado ano é bissexto. Note como combinamos o parâmetro "L" da função date() e a função mktime() contendo o ano que queremos testar. Veja o código PHP completo para o exemplo: <html> <head> <title>Estudando PHP</title> </head> <body> <?php $ano = "2020"; $bissexto = date("L", mktime(0, 0, 0, 1, 1, $ano)); if($bissexto == 0){ echo "O ano informado não é bissexto"; } else{ echo "O ano informado é bissexto"; } ?> </body> </html> Ao executar este código PHP nós teremos o seguinte resultado: O ano informado é bissexto |
C ::: Desafios e Lista de Exercícios Resolvidos ::: C Básico |
Exercício Resolvido de C - Como calcular o restante de um salário após o pagamento de duas contas com jurosQuantidade de visualizações: 977 vezes |
Pergunta/Tarefa: Cintia acaba de receber seu salário mas precisa pagar duas contas atrasadas. Por causa do atraso, ela deverá pagar multa de 2% sobre cada conta. Faça um programa que leia o valor do salário e das duas contas e que calcule e mostre quanto restará do salário de Cintia. Sua saída deverá ser parecida com: Informe o salário: 1350 Valor da primeira conta: 140 Valor da segunda conta: 300 Total das contas sem juros: 440.0 Total dos juros: 8.8 Total das contas com juros: 448.8 Sobra do salário: 901.2 Veja a resolução comentada deste exercício usando C: #include <stdio.h> #include <stdlib.h> #include <locale.h> int main(int argc, char *argv[]){ setlocale(LC_ALL,""); // para acentos do português double salario, conta1, conta2, total_contas; double total_juros, total_contas_com_juros; double total_contas_sem_juros, sobra_salario; // vamos pedir que o usuário informe o valor do salário e das duas contas printf("Informe o salário: "); scanf("%lf", &salario); printf("Valor da primeira conta: "); scanf("%lf", &conta1); printf("Valor da segunda conta: "); scanf("%lf", &conta2); // total a ser pago nas duas contas sem os juros total_contas = conta1 + conta2; // calcula os juros total_juros = total_contas * 0.02; // total a ser pago com juros total_contas_com_juros = total_contas + total_juros; // sobra do salário sobra_salario = salario - total_contas_com_juros; // mostra os resultados printf("\nTotal das contas sem juros: %lf", total_contas); printf("\nTotal dos juros: %lf", total_juros); printf("\nTotal das contas com juros: %lf", total_contas_com_juros); printf("\nSobra do salário: %lf", sobra_salario); printf("\n\n"); system("PAUSE"); return 0; } |
Java ::: Desafios e Lista de Exercícios Resolvidos ::: Laços de Repetição |
Exercícios Resolvidos de Java - Contando de 1 até 20 e formatando a saída usando System.out.printf()Quantidade de visualizações: 11093 vezes |
Exercício Resolvido de Java - Contando de 1 até 20 e formatando a saída usando System.out.printf() Pergunta/Tarefa: Escreva um programa Java console que usa o laço for para contar de 1 até 20 e exibir estes valores no seguinte formato: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 Dica: Use o operador de módulo % para determinar o momento da quebra de linha e o método System.out.printf() para formatar o valor a ser exibido de forma a adicionar a quantidade correta de espaços entre os valores. Resposta/Solução: Eis a solução para este exercício: public static void main(String[] args){ // laço for que conta de 1 até 20 for(int i = 1; i <= 20; i++){ System.out.printf( "%2d ", i); if(i % 5 == 0){ System.out.println(); } } } O mais importante a considerar aqui é o uso do método System.out.printf() na linha: System.out.printf( "%2d ", i); Aqui nós estamos especificando a largura (width) do valor inteiro como dois dígitos. Desta forma, se o valor for menor que 10 (um dígito), um espaço extra será adicionado à esquerda. Se o valor for maior que 9 (dois dígitos) nada acontece. Finalmente, três espaços são adicionados à direita do valor. Veja agora a explicação sobre o uso do operador de módulo % para provocar a quebra de linha após o quinto valor de cada fileira: Aqui nós testamos se o valor atual da variável i é múltiplo de 5 (para ser múltiplo de 5, o resto da divisão inteira de valor por 5 deverá ser 0). Neste exemplo os valores que são múltiplos de 5 são: 5, 10, 15 e 20. Assim. logo após estes valores nós fazemos uma chamada à: System.out.println(); para provocar uma quebra de linha e iniciar uma nova fileira de valores. |
Java ::: Desafios e Lista de Exercícios Resolvidos ::: Laços de Repetição |
Exercícios Resolvidos de Java - Um laço for que conta de 0 até 10Quantidade de visualizações: 13657 vezes |
Pergunta/Tarefa: Escreva uma aplicação console Java que usa o laço for para contar de 0 até 10. Faça dois exemplos. No primeiro você deverá escrever os valores na horizontal e no segundo você deverá escrever os valores na vertical: Resposta/Solução: Este exercício é um dos primeiros sobre o uso de laços nos cursos de Java e você pode fazer usando o Bloco de Notas, Netbeans, Eclipse ou sua IDE favorita. Veja o código que usa o laço for para contar de 0 até 10 e exibir os valores na horizontal: public static void main(String[] args){ // laço for que conta de 0 até 10 e exibe os valores na horizontal for(int i = 0; i <= 10; i++){ System.out.print(i + " "); } } Quando você executar este código, os valores deverão ser impressos da seguinte forma: 0 1 2 3 4 5 6 7 8 9 10 Agora, veja como uma pequena modificação faz com que os valores sejam impressos na vertical: public static void main(String[] args){ // laço for que conta de 0 até 10 e exibe os valores na vertical for(int i = 0; i <= 10; i++){ System.out.println(i + " "); } } Agora os valores serão exibidos da seguinte forma: 0 1 2 3 4 5 6 7 8 9 10 |
Java ::: Classes e Componentes ::: JList |
Java Swing - Como obter o valor selecionado em um JList usando o método getSelectedValue()Quantidade de visualizações: 13263 vezes |
Nesta dica eu mostro como chamar o método getSelectedValue() de um controle JList para obter o valor do item selecionado na mesma. No exemplo nós exibimos o item selecionado em uma mensagem JOptionPane ao clicarmos em um botão JButton. 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{ JList lista; public Estudos() { super("A classe JList"); Container c = getContentPane(); c.setLayout(new FlowLayout(FlowLayout.LEFT)); // Cria os itens da lista String nomes[] = {"Carlos", "Marcelo", "Fabiana", "Carolina", "Osmar"}; // Cria a JList lista = new JList(nomes); // Define a seleção única para a lista lista.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); // Um botão que permite obter o valor do item selecionado JButton btn = new JButton("Obter valor selecionado"); btn.addActionListener( new ActionListener(){ public void actionPerformed(ActionEvent e){ String valor = (String)(lista.getSelectedValue()); JOptionPane.showMessageDialog(null, "O valor selecionado é: " + valor); } } ); // Adiciona a lista à janela c.add(new JScrollPane(lista)); // 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); } } Ao executar esta aplicação Java Swing nós teremos o seguinte resultado: ![]() |
Ruby ::: Desafios e Lista de Exercícios Resolvidos ::: Estruturas de Controle |
Exercícios Resolvidos de Ruby - Ler os lados de um triângulo e informar se ele é isósceles, escaleno ou equiláteroQuantidade de visualizações: 879 vezes |
Pergunta/Tarefa: Um triângulo é uma forma geométrica (polígono) composta de três lados, sendo que cada lado é menor que a soma dos outros dois lados. Assim, para que um triângulo seja válido, é preciso que seus lados A, B e C obedeçam à seguinte regra: A < (B + C), B < (A + C) e C < (A + B). Escreva um programa Ruby que leia os três lados de um triângulo e verifique se tais valores realmente formam um triângulo. Se o teste for satisfatório, informe se o triângulo é isósceles (dois lados iguais e um diferente), escaleno (todos os lados diferentes) ou equilátero (todos os lados iguais). Sua saída deverá ser parecida com: Informe o primeiro lado do triângulo: 30 Informe o segundo lado do triângulo: 40 Informe o terceiro lado do triângulo: 60 O triângulo é escaleno Veja a resolução comentada deste exercício usando Ruby: # vamos ler o primeiro lado do triângulo print "Informe o primeiro lado do triângulo: " lado_a = Integer(gets) # vamos ler o segundo lado do triângulo print "Informe o segundo lado do triângulo: " lado_b = Integer(gets) # vamos ler o terceiro lado do triângulo print "Informe o terceiro lado do triângulo: " lado_c = Integer(gets) # os lados informados formam um triângulo? if((lado_a < (lado_b + lado_c)) && (lado_b < (lado_a + lado_c)) \ && (lado_c < (lado_a + lado_b))) # é um triângulo equilátero (todos os lados iguais)? if((lado_a == lado_b) && (lado_b == lado_c)) print "O triângulo é equilátero" else # é isósceles (dois lados iguais e um diferente)? if((lado_a == lado_b) || (lado_a == lado_c) || \ (lado_c == lado_b)) print "O triângulo é isósceles" else # é escaleno print "O triângulo é escaleno" end end else print "Os lados informados não formam um triângulo." end |
C# ::: Dicas & Truques ::: Arrays e Matrix (Vetores e Matrizes) |
Como pesquisar um valor em um array C# usando o método Find() e um PredicateQuantidade de visualizações: 13019 vezes |
Nesta dica veremos como usar o método Find() da classe Array e um método Predicate para pesquisar um item em um vetor de string na linguagem C#. Note que a função Predicate é fornecida como segundo argumento para o método Find(). Veja o código completo para o exemplo: using System; namespace Estudos { class Program { static void Main(string[] args) { // cria e inicializa um array de strings string[] cidades = {"Goiânia", "São Paulo", "Rio de Janeiro", "Curitiba"}; // pesquisa o valor "Goiânia" string item = Array.Find(cidades, pesquisar); Console.WriteLine(item != null ? "Item encontrado" : "Item não encontrado."); Console.WriteLine("\n\nPressione uma tecla para sair..."); Console.ReadKey(); } // método auxiliar que serve como Predicate para localizar // o valor desejado private static bool pesquisar(String cid) { return (cid.Equals("Goiânia") ? true : false); } } } Ao executar este código C# nós teremos o seguinte resultado: Item encontrado |
C++ ::: Win32 API (Windows API) ::: Processos |
Como usar a função EnumProcesses() da WinAPI em seus códigos C++ para obter os identificadores de cada processo ativo no WindowsQuantidade de visualizações: 8513 vezes |
A função EnumProcesses() pode ser usada quando queremos obter os ids de todos os processos sendo executados no momento no Windows. Veja o protótipo desta função:BOOL WINAPI EnumProcesses( DWORD* pProcessIds, DWORD cb, DWORD* pBytesReturned ); Esta função possui três parâmetros: a) DWORD* pProcessIds - Um ponteiro para uma matriz que receberá a lista de identificadores dos processos. É importante definir uma matriz um pouco grande, visto que não sabemos de antemão quantos processos serão retornados. b) DWORD cb - O tamanho da matriz pProcessIds em bytes. c) DWORD* pBytesReturned - O números de bytes retornados na matriz pProcessIds. Podemos facilmente saber quantos processos foram encontrados simplesmente dividindo o número de bytes retornados pela quantidade de bytes em um DWORD. Veja um trecho de código no qual listamos os ids de todos os processos sendo executados atualmente. #include <cstdlib> #include <iostream> #include <windows.h> #include <psapi.h> /* Este exemplo usa o header <psapi.h> É necessário fazer uma referência à psapi.lib */ using namespace std; int main(int argc, char *argv[]){ DWORD processos[1024]; // vamos listar até 1024 processos DWORD pBytesReturned; // bytes retornados pela função EnumProcesses() // vamos listar os processos EnumProcesses(processos, sizeof(processos), &pBytesReturned); // quantidade de processos retornados int retornados = pBytesReturned / sizeof(DWORD); // agora vamos listar os ids dos processos retornados for(int i = 0; i < retornados; i++){ if(!processos[i] == 0){ cout << "Processo " << (i + 1) << ": " << processos[i] << endl; } } system("PAUSE"); return EXIT_SUCCESS; } O id de um processo pode ser fornecido para muitas funções úteis do Windows, entre elas OpenProcess(). Veja um trecho de código no qual fechamos (forçadamente) um processo mediante o fornecimento de seu id: #include <cstdlib> #include <iostream> #include <windows.h> using namespace std; int main(int argc, char *argv[]){ // vamos fechar o processo com o id 3040 // CUIDADO: Verifique o id do processo antes de fechá-lo // pode ser que você esteja fechando processos essenciais // para o bom funcionamento do Windows // vamos abrir o processo desejado // vai retornar ERROR_INVALID_HANDLE se o processo não // puder ser aberto HANDLE hProcesso = OpenProcess(PROCESS_TERMINATE, 0, 3040); // vamos fechar o processo if(TerminateProcess(hProcesso, 0)){ cout << "Processo finalizado com sucesso." << endl; } else{ cout << "Erro ao finalizar o processo: " << GetLastError() << endl; } // vamos fechar o handle do processo CloseHandle(hProcesso); system("PAUSE"); return EXIT_SUCCESS; } |
Python ::: Dicas & Truques ::: Strings e Caracteres |
Como testar se o primeiro caractere de cada palavra em uma string Python é o único em letra maiúscula usando a função istitle()Quantidade de visualizações: 8867 vezes |
Nesta dica mostrarei como podemos usar a função istitle() da linguagem Python para verificar se o primeiro caractere de cada palavra em uma frase ou texto é o único caractere em letra maiúscula. Se o teste for verdadeiro o retorno é true, caso contrário o retorno é false. Veja o exemplo completo: def main(): frase = "Gosto De Programar Em Python" if frase.istitle(): print("O primeiro caractere de cada palavra é maiusculo") else: print("O teste não resultou verdadeiro") if __name__== "__main__": main() Ao executar este código Python nós teremos o seguinte resultado: O primeiro caractere de cada palavra é maiusculo. |
Java ::: Java Swing - Gerenciadores de Layout ::: GridBagLayout |
Como criar uma tela de login usando o gerenciador de layout GridBagLayout do Java SwingQuantidade de visualizações: 35878 vezes |
Temos que aceitar o fato de que o uso de uma IDE visual facilita muito o trabalho de criação de interfaces gráficas (GUI). Contudo, é muito bom poder escrever telas via código mesmo. E o gerenciador de layout GridBagLayout possibilita a criação de layouts realmente avançados. O trecho de código abaixo mostra como criar uma tela de login usando este gerenciador. Guarde este código. Ele poder ser útil na criação de outros formulários: package arquivodecodigos; import javax.swing.*; import javax.swing.border.*; import java.awt.*; public class Estudos extends JFrame{ public Estudos(){ super("Tela de login usando GridBagLayout"); // define o layout setLayout(new GridBagLayout()); // define uma borda para aumentar o espaço // entre as bordas da janela e o gerenciador // de layout ((JComponent)getContentPane()).setBorder( new EmptyBorder(5, 8, 8, 8)); // cria o GridBagConstraints GridBagConstraints gbc = new GridBagConstraints(); // controla o espaço entre os componentes // e as linhas do GridBagLayout. // aqui nós definimos 3 pixels para os // lados de cima, esquerda, inferior e direita gbc.insets = new Insets(3, 3, 3, 3); // adiciona componentes à janela // esta primeira JLabel ocupará duas células // na primeira linha gbc.gridy = 0; // linha gbc.gridx = 0; // coluna gbc.gridwidth = 2; // duas células na linha // alinha o label à esquerda gbc.anchor = GridBagConstraints.WEST; JLabel infoLabel = new JLabel("Dados do Usuário:"); // vamos aumentar a fonte da JLabel infoLabel.setFont(new Font("SansSerif", Font.BOLD, 14)); // vamos adicionar um espaço extra na parte // inferior da JLabel infoLabel.setBorder( new EmptyBorder(0, 0, 5, 0)); add(infoLabel, gbc); gbc.gridy = 1; // linha gbc.gridx = 0; // coluna gbc.gridwidth = 1; // cria a label do usuário JLabel usuarioLabel = new JLabel("Usuário:"); add(usuarioLabel, gbc); gbc.gridy = 1; // linha gbc.gridx = 1; // coluna // cria a JTextField do usuário JTextField usuarioTxt = new JTextField(13); add(usuarioTxt, gbc); gbc.gridy = 2; // linha gbc.gridx = 0; // coluna // cria a label da senha JLabel usuarioSenha = new JLabel("Senha:"); add(usuarioSenha, gbc); gbc.gridy = 2; // linha gbc.gridx = 1; // coluna // cria a JPasswordField da senha JPasswordField senhaTxt = new JPasswordField(13); add(senhaTxt, gbc); gbc.gridy = 3; // linha gbc.gridx = 1; // coluna gbc.gridwidth = 2; // duas células na linha // alinha os botões à direita gbc.anchor = GridBagConstraints.EAST; JPanel botoesPanel = new JPanel(); botoesPanel.add(new JButton("Cancelar")); botoesPanel.add(new JButton("OK")); add(botoesPanel, gbc); pack(); // ajusta o tamanho da janela ao // dos componentes 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: ![]() |
Nossas 20 dicas & truques de programação mais populares |
Java - Exercícios Resolvidos de Java - Como converter de binário para decimal em Java usando o laço for C - Como inverter (reverter) o conteúdo de uma string em C usando uma função str_reverse() personalizada |
Você também poderá gostar das dicas e truques de programação abaixo |
Python - Exercícios Resolvidos de Python - Como converter de binário para decimal em Python usando o laço for C# - Como abrir outros formulários de sua aplicação C# Windows Forms a partir do formulário principal AutoCAD Civil 3D - Como criar pontos COGO no AutoCAD Civil 3D |
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 |