Java, C/C++, Python, C#, LISP, AutoLisp, AutoCAD e VBA
PHP, Python, C#, JavaScript, Laravel, Google Ads e SEO

C ::: Desafios e Lista de Exercícios Resolvidos ::: Laços de Repetição

Exercício Resolvido de C - Escreva um programa C que usa o laço for para desenhar um padrão de diamante de estrelas

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

Neste exercício para a prática da linguagem C você deverá usar o laço for para desenhar o famoso padrão de diamante de estrelas. Você pode também usar o laço while, se assim você o desejar.

O programa deverá pedir que o usuário informe a quantidade de linhas que marcará a metade do diamante.

Seu programa deve apresentar a seguinte saída:

Informe a quantidade de linhas: 5
    *
   ***
  *****
 *******
*********
 *******
  *****
   ***
    *

Pressione qualquer tecla para continuar...
Resposta/Solução:

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

#include <stdio.h>
#include <stdlib.h> 
  
int main(int argc, char *argv[]){
  int i, j; // para controlar o laço externo e interno
  int linhas; // quantidade de linhas
  int estrelas, espacos; // quantidade de estrelas e espaços
   
  // vamos pedir a quantidade de linhas 
  printf("Informe a quantidade de linhas: ");
  // vamos ler a entrada do usuário
  scanf("%d", &linhas);
    
  estrelas = 1; // começamos com uma estrela (no topo do diamante)
  espacos = linhas - 1; // se linhas for igual a 5 nós começamos
  // com 4 espaços
    
  // repete duas vezes a quantidade de linhas informadas
  for(i = 1; i < linhas * 2; i++){
    // vamos imprimir os espaços
    for(j = 1; j <= espacos; j++){
      printf(" "); 
    }
        
    // agora vamos imprimir estrelas
    for(j = 1; j < estrelas * 2; j++){
      printf("*");
    }
		    
    // passamos para a próxima linha
    printf("\n");
        
    if(i < linhas){ // é a parte superior do diamante
      espacos--; // diminui os espaços
      estrelas++; // e aumenta as estrelas
    }
    else{ // é a parte inferior do diamente
      espacos++; // aumenta os espaços
      estrelas--; // e diminui as estrelas
    }
  }
  
  printf("\n\n");
  system("pause");
  return 0;
}



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

Como criar uma tela de login usando o gerenciador de layout GridBagLayout do Java Swing

Quantidade de visualizações: 36182 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:




C++ ::: Dicas & Truques ::: MIDI Musical Instrument Digital Interface, Mapeamento e sequenciamento MIDI, Entrada e saída MIDI

Programação MIDI usando C++ - Como usar um vetor de chars para construir uma mensagem MIDI e passá-lo para a função midiOutShortMsg() da API do Windows

Quantidade de visualizações: 2605 vezes
Nas dicas dessa seção nós vimos como é possível enviar uma mensagem MIDI para o dispositivo de saída por meio da função midiOutShortMsg() da API do Windows. Essa função recebe um handle para o dispositivo de saída MIDI e um valor DWORD contendo a mensagem MIDI.

Se você revisitar essas dicas, verá que na maioria delas nós informamos a mensagem MIDI diretamente no parâmetro da função (como um valor hexadecimal). Nesta dica mostrarei como é possível construir as mensagens MIDI usando seus valores individuais e, o que é melhor, usando valores decimais.

Para isso nós vamos construir um vetor de char e informar os valores que compõem a mensagem. É importante observar que a função midiOutShortMsg() exige que a mensagem MIDI seja informada na ordem de bytes "little endian" ou seja, o status MIDI é informado no byte de ordem mais baixa. Isso é conseguido com um cast do vetor para um unsigned long.

Veja o trecho de código:

// vamos criar um vetor contendo os valores que compõem a mensagem MIDI
unsigned char vetor[4];
vetor[0] = 144; // Note-on no Canal 1
vetor[1] = 40; // Nota Mi na 4ª oitava
vetor[2] = 100; // Velocidade/volume da nota
vetor[3] = 0; // Não é usado
// e aqui é que acontece a mágica. Quando fazemos o cast do
// vetor para o tipo long sem sinal, os valores são colocados em
// little endian, justamente a ordem de bytes esperada pela
// função midiOutShortMsg()
unsigned long mensagem = *(unsigned long*)vetor;
// envia a mensagem MIDI
midiOutShortMsg(saida, mensagem);

Note que não coloquei o código todo. Para completá-lo, veja outras dicas dessa seção.


Java ::: Dicas & Truques ::: Strings e Caracteres

Como transformar em letras maiúsculas as iniciais de cada palavra em uma string Java

Quantidade de visualizações: 1 vezes
Nesta dica mostrarei como podemos combinar os métodos da classe String e da classe StringBuffer para converter em letras maiúsculas as iniciais de cada palavra de uma frase ou texto. Para isso nós vamos usar os métodos charAt(), length(), toUpperCase() e setCharAt().

Veja o código completo para o exemplo:

package estudos;

public class Estudos{
  public static void main(String[] args){
    // vamos criar uma string contendo a nossa frase
    String frase = "Programar em java é bom demais";
    System.out.println("A frase original é: " + frase);
    
    // vamos converter a frase em letras minúsculas
    frase = frase.toLowerCase();
    
    // agora criamos um StringBuffer contendo a frase anterior 
    StringBuffer frase2 = new StringBuffer(frase);
    
    // um laço que percorra todos os caracteres da frase
    for(int i = 0; i < frase2.length(); i++){
      Character letra = frase2.charAt(i);
      if(i == 0){
        letra = Character.toUpperCase(letra);
        frase2.setCharAt(i, letra);
      }
      else if((i > 0) && (frase2.charAt(i - 1) == ' ')){
        letra = Character.toUpperCase(letra);
        frase2.setCharAt(i, letra);
      }
    }
    
    // retornamos para a string    
    frase = frase2.toString(); 
    // e exibimos o resultado
    System.out.println("Resultado: " + frase);
    
    System.exit(0);
  }
} 

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

A frase original é: Programar em java é bom demais
Resultado: Programar Em Java É Bom Demais


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 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
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

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


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 Apenas R$ 32,90

Planilha Web - Planilhas e Calculadoras online para estudantes e profissionais de Engenharia Civil, Engenharia Elétrica e Engenharia Mecânica.


© 2025 Arquivo de Códigos - Todos os direitos reservados
Neste momento há 108 usuários muito felizes estudando em nosso site.