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 estrelasQuantidade 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...
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 SwingQuantidade 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 WindowsQuantidade 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 JavaQuantidade 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 |
|
TypeScript - Como calcular o coeficiente angular de uma reta em TypeScript dados dois pontos no plano cartesiano Python - Como converter Centímetros Cúbicos em Metros Cúbicos em Python - Python para Física e Engenharia C - Como calcular a massa de um corpo dada sua energia cinética e sua velocidade usando a linguagem C |
Você também poderá gostar das dicas e truques de programação abaixo |
|
Java - Exercícios Resolvidos de Java - Como calcular e exibir os 50 primeiros números primos em Java AutoCAD Civil 3D .NET C# - Como pedir para o usuário selecionar um alinhamento no Civil 3D usando a função GetEntity() do AutoCAD Civil 3D .NET C# API |
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 |






