Skip to content

juletopi/Linguagem_de_Programacao_Visual

Repository files navigation

Licence-badge

VisualProgramming-pic

Linguagem de Programação Visual 📟

• Este é um repositório com os conteúdos de Linguagem de Programação Visual,
ministradas pelo professor Reinaldo Lima Pereira, utilizando o Visual Studio,
a linguagem CSharp e a estrutura de interface do Windows Forms
como ferramentas de aprendizado.

Sumário 🧾


Readme Quotes

👨‍🏫 Professor:

ReinaldoLima-pic

Reinaldo Lima Pereira - Professor de Informática | Professor de Curso Técnico, Superior e Pós-Graduação
IFRO Campus Ji-ParanáAtuando desde Março de 2016
Linguagens & Tecnologias: C#Windows FormsJavaDelphi
Contato: reinaldo.pereira@ifro.local


📚 Conceitos Aprendidos:

1. Ferramentas do Windows Forms e Criando uma Calculadora Simples

JanelaCalculadoraSimples-pic

Note

Retirado da aula de "Calculadora_WinForms"

Nesta aula foram aprendidos:

  • Conceitos básicos da ferramenta do Windows Forms
  • Criação labels, text-boxes e buttons com a Caixa de Ferramentas
  • Algoritmos simples de Soma, Subtração, Multiplicação e Divisão
private void btnSomar_Click(object sender, EventArgs e)
{
    lblResultadoNum.Text = (float.Parse(txtValor1.Text) + float.Parse(txtValor2.Text) + float.Parse(txtValor3.Text) + float.Parse(txtValor4.Text)).ToString();
}

private void btnSubtrair_Click(object sender, EventArgs e)
{
    lblResultadoNum.Text = (float.Parse(txtValor1.Text) - float.Parse(txtValor2.Text) - float.Parse(txtValor3.Text) - float.Parse(txtValor4.Text)).ToString();
}

private void btnMultiplicar_Click(object sender, EventArgs e)
{
    lblResultadoNum.Text = (float.Parse(txtValor1.Text) * float.Parse(txtValor2.Text) * float.Parse(txtValor3.Text) * float.Parse(txtValor4.Text)).ToString();
}

private void btnDividir_Click(object sender, EventArgs e)
{
    lblResultadoNum.Text = (float.Parse(txtValor1.Text) / float.Parse(txtValor2.Text) / float.Parse(txtValor3.Text) / float.Parse(txtValor4.Text)).ToString();
}

private void btnLimpar_Click(object sender, EventArgs e)
{
    txtValor1.Clear();
    txtValor2.Clear();
    txtValor3.Clear();
    txtValor4.Clear();
    txtValor1.Select();
    lblResultadoNum.Text = "0";
}

2. Criando uma Calculadora de Desconto

JanelaCalcDeDesconto-pic

Note

Retirado da aula de "Calc_de_Desconto_WinForms"

Nesta aula foram aprendidos:

  • Criação labels, text-boxes e buttons com a Caixa de Ferramentas
  • Algoritmo matemático simples de aplicação de desconto em porcentagem
private void btnCalcularDesconto_Click(object sender, EventArgs e)
{
    double valorDaCompra = 0, percDeDesconto = 0, valorComDesconto = 0;

    valorDaCompra = Convert.ToDouble(txtValorDaCompra.Text);
    percDeDesconto = Convert.ToDouble(txtPercDeDesconto.Text);
    valorComDesconto = Convert.ToDouble(lblResultadoNum.Text);

    valorComDesconto = valorDaCompra - valorDaCompra * (percDeDesconto / 100);

    lblResultadoNum.Text = valorComDesconto.ToString("F");
}

    private void btnLimpar_Click(object sender, EventArgs e)
{
    txtPercDeDesconto.Clear();
    txtValorDaCompra.Clear();
    txtValorDaCompra.Select();
    lblResultadoNum.Text = "0";
}

3. Criando um Menu de Seleção para abrir Novas Janelas

Nesta aula foram aprendidos:

  • Criação de novos formulários para criar novas janelas para acessar através dos botões
  • Linkar o acesso de uma janela a outra através do código
  • Criar um conversor de Hectares ⇆ Alqueires
  • Criar um conversor de Horas ⇆ Minutos
  • Criar um conversor de Metros ⇆ Km
  • Criar um conversor de Hectares ⟶ Km²

3.1 O Menu de Conversores

JanelaMenudeConversores-pic

[!NOTE]
Retirado da aula de "Menu_de_Forms_WinForms"

private void btnConversorHecteAlqu_Click(object sender, EventArgs e)
{
    FormConverterHecteAlqu form = new FormConverterHecteAlqu();
    form.ShowDialog();
}

private void btnConversorMetroseKilometros_Click(object sender, EventArgs e)
{
    FormConverterMetroseKilometros form = new FormConverterMetroseKilometros();
    form.ShowDialog();
}

private void btnConversorHoraseMinutos_Click(object sender, EventArgs e)
{
    FormConverterHoraseMinutos form = new FormConverterHoraseMinutos();
    form.ShowDialog();
}

private void btnConversorHecteKmQuadrado_Click(object sender, EventArgs e)
{
    FormConverterHecteKmQuadrado form = new FormConverterHecteKmQuadrado();
    form.ShowDialog();
}

private void linkJuletopi_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
    string url = "https://github.com/juletopi";
    Process.Start(url);
}

3.2 As Novas Janelas: Conversor de Hectares ⇆ Alqueires

JanelaConversorHectAlque-pic

[!NOTE]
Retirado da aula de "Menu_de_Forms_WinForms"

private void btnConverterHectare_Click(object sender, EventArgs e)
{
    double valorHectare = 0, valorAlqueire = 0;

    valorHectare = Convert.ToDouble(txtValorHectare.Text);
    valorAlqueire = Convert.ToDouble(lblResultadoHectareParaAlqueire.Text);

    valorAlqueire = valorHectare * 2.42;

    lblResultadoHectareParaAlqueire.Text = valorAlqueire.ToString();
}

private void btnConverterAlquere_Click(object sender, EventArgs e)
{
    double valorHectare = 0, valorAlqueire = 0;

    valorAlqueire = Convert.ToDouble(txtValorAlqueire.Text);
    valorHectare = Convert.ToDouble(lblResultadoAlqueireParaHectare.Text);

    valorHectare = valorAlqueire / 2.42;

    lblResultadoAlqueireParaHectare.Text = valorHectare.ToString();
}

private void btnLimpar_Click(object sender, EventArgs e)
{
    txtValorHectare.Clear();
    txtValorAlqueire.Clear();
    txtValorHectare.Select();
    lblResultadoHectareParaAlqueire.Text = "0";
    lblResultadoAlqueireParaHectare.Text = "0";
}

private void linkJuletopi_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
    string url = "https://github.com/juletopi";
    Process.Start(url);
}

3.3 As Novas Janelas: Conversor de Metros ⇆ Km

JanelaConversorMetrosKm

[!NOTE]
Retirado da aula de "Menu_de_Forms_WinForms"

private void btnConverterMetrosParaKm_Click(object sender, EventArgs e)
{
    double valorMetros = 0, valorQuilometros = 0;

    valorMetros = Convert.ToDouble(txtValorMetros.Text);
    valorQuilometros = Convert.ToDouble(lblResultadoMetrosParaKm.Text);

    valorQuilometros = valorMetros / 1000;

    lblResultadoMetrosParaKm.Text = valorQuilometros.ToString();
}

private void btnConverterKmParaMetros_Click(object sender, EventArgs e)
{
    double valorMetros = 0, valorQuilometros = 0;

    valorQuilometros = Convert.ToDouble(txtValorKm.Text);
    valorMetros = Convert.ToDouble(lblResultadoKmParaMetros.Text);

    valorMetros = valorQuilometros * 1000;

    lblResultadoKmParaMetros.Text = valorMetros.ToString();
}

private void btnLimpar_Click(object sender, EventArgs e)
{
    txtValorMetros.Clear();
    txtValorKm.Clear();
    txtValorMetros.Select();
    lblResultadoMetrosParaKm.Text = "0";
    lblResultadoKmParaMetros.Text = "0";
}

private void linkJuletopi_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
    string url = "https://github.com/juletopi";
    Process.Start(url);
}

3.4 As Novas Janelas: Conversor de Horas ⇆ Minutos

JanelaConversorHorasMinutos-pic

[!NOTE]
Retirado da aula de "Menu_de_Forms_WinForms"

private void btnConverterHorasParaMinutos_Click(object sender, EventArgs e)
{
    double valorHoras = 0, valorMinutos = 0;

    valorHoras = Convert.ToDouble(txtValorHoras.Text);
    valorMinutos = Convert.ToDouble(lblResultadoHorasParaMinutos.Text);

    valorMinutos = valorHoras * 60;

    lblResultadoHorasParaMinutos.Text = valorMinutos.ToString();
}

private void btnConverteMinutosParaHoras_Click(object sender, EventArgs e)
{
    double valorHoras = 0, valorMinutos = 0;

    valorMinutos = Convert.ToDouble(txtValorMinutos.Text);
    valorHoras = Convert.ToDouble(lblResultadoMinutosParaHoras.Text);

    valorHoras = valorMinutos / 60;

    lblResultadoMinutosParaHoras.Text = valorHoras.ToString();
}

private void btnLimpar_Click(object sender, EventArgs e)
{
    txtValorHoras.Clear();
    txtValorMinutos.Clear();
    txtValorHoras.Select();
    lblResultadoHorasParaMinutos.Text = "0";
    lblResultadoMinutosParaHoras.Text = "0";
}

private void linkJuletopi_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
    string url = "https://github.com/juletopi";
    Process.Start(url);
}

3.5 As Novas Janelas: Conversor de Hectares ⟶ Km²

JanelaConversorHectKmQuadrado-pic

[!NOTE]
Retirado da aula de "Menu_de_Forms_WinForms"

private void btnConverterHectParaKmQuadrado_Click(object sender, EventArgs e)
{
    double valorHectare = 0, valorKmQuadrado = 0;

    valorHectare = Convert.ToDouble(txtValorHectare.Text);
    valorKmQuadrado = Convert.ToDouble(lblResultadoHectParaKmQuadrado.Text);

    valorKmQuadrado = valorHectare * 0.0042;

    lblResultadoHectParaKmQuadrado.Text = valorKmQuadrado.ToString();
}

private void btnLimpar_Click(object sender, EventArgs e)
{
    txtValorHectare.Clear();
    txtValorHectare.Select();
    lblResultadoHectParaKmQuadrado.Text = "0";
}

private void linkJuletopi_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
    string url = "https://github.com/juletopi";
    Process.Start(url);
}

4. Exemplos de Interação com o Usuário

Nesta aula foram aprendidos:

  • Message boxes para interação com o usuário
  • Diferentes formas de inserir message boxes
  • Eventos de click in e click out

4.1 O Menu de Opções de Interação

JanelaMenudeOpcoesdeInteracao-pic

[!NOTE]
Retirado da aula de "AppExemplo2"

// Criando o Menu Principal

private void btnAlertas_Click(object sender, EventArgs e)
{
    FormAlertas form = new FormAlertas();
    form.ShowDialog(); // <-- Não permite que o usuário faça qualquer outra ação até que termine
                              // ou conclua o processo da janela atual do qual ele abriu.
}

private void btnExemploAlerta_Click(object sender, EventArgs e)
{
    FormExemploAlerta form = new FormExemploAlerta(); // <-- Linkando a ação do click para abrir uma nova janela
    form.ShowDialog();
}

private void btnExemploAltdeRotulo_Click(object sender, EventArgs e)
{
    FormExemploRotulos form = new FormExemploRotulos();
    form.ShowDialog();
}

private void btnExemploComboBox_Click(object sender, EventArgs e)
{
    FormExemploComboBox form = new FormExemploComboBox();
    form.ShowDialog();
}

private void linkJuletopi_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
    string url = "https://github.com/juletopi";
    Process.Start(url);
}

4.2 As Novas Janelas: Exemplos de Alertas

JanelaExemplosdeAlertas-pic

[!NOTE]
Retirado da aula de "AppExemplo2"

// Como criar Mensagens de Interação com o Usuário

private void btnInformacao_Click(object sender, EventArgs e)
{
    MessageBox.Show("Texto da Menssagem", "Título da Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information); // <-- Menssagem de INFORMAÇÂO
}

private void btnAtencao_Click(object sender, EventArgs e)
{
    MessageBox.Show("Texto da Menssagem", "Título da Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Warning); // <-- Mensagem de ALERTA
}

private void btnErro_Click(object sender, EventArgs e)
{
    MessageBox.Show("Texto da Menssagem", "Título da Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Error); // <-- Mensagem de ERRO
}

private void btnPergunta_Click(object sender, EventArgs e)
{
    MessageBox.Show("Texto da Menssagem", "Título da Mensagem", MessageBoxButtons.YesNo, MessageBoxIcon.Question); // <-- Mensagem de PERGUNTA
}

private void btnExemplo_Click(object sender, EventArgs e)
{
    DialogResult resposta;
    resposta = MessageBox.Show("Em caminho de Paca, Tatu caminha dentro?", "Pergunta:", MessageBoxButtons.YesNo, MessageBoxIcon.Question);

    MessageBox.Show("Resposta" +resposta.ToString(), "Pergunta:", MessageBoxButtons.OK, MessageBoxIcon.Information);

    MessageBox.Show("Deseja fechar o programa?", "Pergunta:", MessageBoxButtons.YesNo, MessageBoxIcon.Question);

    if(resposta == DialogResult.Yes) 
    {
        this.Close(); // <-- Fecha o programa
    }
}

private void linkJuletopi_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
    string url = "https://github.com/juletopi";
    Process.Start(url);
}

4.3 As Novas Janelas: Exemplo com Alerta

JanelaExemplocomAlerta-pic

[!NOTE]
Retirado da aula de "AppExemplo2"

private void btnCalcular_Click(object sender, EventArgs e)
{
    double valor1, valor2, total;
    valor1 = Convert.ToDouble(txtValor1.Text);
    valor2 = Convert.ToDouble(txtValor2.Text);

    if (valor2 != 0)
    {
        total = valor1 / valor2;
        lblResultadoDivisao.Text = total.ToString("F2");
    }
    else
    {
        MessageBox.Show("Não é possível dividir por zero!", "Alerta", MessageBoxButtons.OK, MessageBoxIcon.Warning);
        txtValor1.Clear();
        txtValor2.Clear();
        txtValor1.Select();
        lblResultadoDivisao.Text = "0";
    }
}

private void btnLimpar_Click(object sender, EventArgs e)
{
    txtValor1.Clear();
    txtValor2.Clear();
    txtValor1.Select();
    lblResultadoDivisao.Text = "0";
}

private void linkJuletopi_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
    string url = "https://github.com/juletopi";
    Process.Start(url);
}

4.4 As Novas Janelas: Exemplo com Rótulo

JanelaExemplocomRotuloANTES-pic JanelaExemplocomRotuloDEPOIS-pic

[!NOTE]
Retirado da aula de "AppExemplo2"

private void btnNovo_Click(object sender, EventArgs e)
{
    txtPercentual.Clear();
    txtSalarioAtual.Clear();
    txtSalarioAtual.Select();
    lblResultado.Text = "Salário Reajustado";
    lblResultado.ForeColor = Color.Black;
}

private void btnCalcular_Click(object sender, EventArgs e)
{
    double salarioAtual = 0, percentual = 0, salarioReajustado;

    salarioAtual = Convert.ToDouble(txtSalarioAtual.Text);
    percentual = Convert.ToDouble(txtPercentual.Text);
    percentual = percentual / 100;

    salarioReajustado = salarioAtual + salarioAtual * percentual;

    lblResultado.Text = "O salário atualizado é: " + salarioReajustado.ToString("C2"); // <-- "C2" adiciona a moeda corrente: "R$ 0,00" ao resultado numérico
    lblResultado.ForeColor = Color.Blue;
}

private void txtSalarioAtual_KeyDown(object sender, KeyEventArgs e)
{
    if(e.KeyCode == Keys.Enter) // <-- Vai para o campo seguinte
    {
        if(txtSalarioAtual.Text == " ") // <-- Verifica se o campo está vazio
        {
            MessageBox.Show("O campo está vazio!", "Alerta", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            txtSalarioAtual.Select(); // <-- Volta ao campo
        }
        else
        {
            txtPercentual.Select();
        }
    }
}

private void txtSalarioAtual_KeyUp(object sender, KeyEventArgs e)
{
    bool verificarNumero = false;

    // Verificando o que foi digitado, "Número" ou "Letra"?

    if((e.KeyCode >= Keys.D0 && e.KeyCode <= Keys.D9) || (e.KeyCode >= Keys.NumPad0 && e.KeyCode <= Keys.NumPad9))
    {
        verificarNumero = true;
    }
    else
    {
        if (e.KeyCode == Keys.Oemcomma || e.KeyCode == Keys.Decimal) verificarNumero = true; // <-- Liberar a virgula

        if (e.KeyCode == Keys.Enter) verificarNumero = true; // <-- Liberar a tecla "enter"

        if (e.KeyCode == Keys.Back) verificarNumero = true; // <-- Liberar a tecla "backspace"

        int qtdVirgula = txtSalarioAtual.Text.Count(v => v == ','); // <-- Contar as virgulas

        if (qtdVirgula > 1) verificarNumero = false; // <-- Verificar as virgulas
    }

    // Validação Final: A mensagem vai aparecer se um dos dois itens não foi atendido

    if (verificarNumero == false)
    {
        MessageBox.Show("Somente números!", "Alerta", MessageBoxButtons.OK, MessageBoxIcon.Warning);
        txtSalarioAtual.Text = txtSalarioAtual.Text.Remove(txtSalarioAtual.Text.Length- 1);
    }
}

private void linkJuletopi_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
    string url = "https://github.com/juletopi";
    Process.Start(url);
}

4.5 As Novas Janelas: Exemplo com Combo-box

JanelaExemplocomCombobox-pic

[!NOTE]
Retirado da aula de "AppExemplo2"

public FormExemploComboBox()
{
    InitializeComponent();
    txtPercDesconto.Visible = false; // <-- A caixa de texto "Perc(%) Desconto" ficará invisível
    lblPercDesconto.Visible = false; // <-- O label "Perc(%) Desconto" ficará invisível
}

private void btnCalcular_Click(object sender, EventArgs e)
{
    int tipoCliente = cbTipoCliente.SelectedIndex;
    double valorCompra = Convert.ToDouble(txtValorCompra.Text);
    double valorDesconto = 0;

    switch (tipoCliente)
    {
        case 0: // Cliente Diamante (25% de Desconto)
            {
                valorDesconto = valorCompra - valorCompra * 0.25;
                lblResultado.Text = valorDesconto.ToString("C2");
                break;
            }

        case 1: // Cliente Ouro (20% de Desconto)
            {
                valorDesconto = valorCompra - valorCompra * 0.20;
                lblResultado.Text = valorDesconto.ToString("C2");
                break;
            }

        case 2: // Cliente VIP (15% de Desconto)
            {
                valorDesconto = valorCompra - valorCompra * 0.15;
                lblResultado.Text = valorDesconto.ToString("C2");
                break;
            }

        case 3: // Cliente Comum (10% de Desconto)
            {
                valorDesconto = valorCompra - valorCompra * 0.10;
                lblResultado.Text = valorDesconto.ToString("C2");
                break;
            }

        case 4: // Cliente Aleatório (5% de Desconto)
            {
                valorDesconto = valorCompra - valorCompra * 0.05;
                lblResultado.Text = valorDesconto.ToString("C2");
                break;
            }

        default:
            {
                MessageBox.Show("Selecione um cliente!", "Alerta", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                break;
            }
        }
    }

    private void btnNovo_Click(object sender, EventArgs e)
    {
        cbTipoCliente.SelectedIndex = -1;
        txtPercDesconto.Clear();
        lblResultado.Text = "R$ 0,00";
        txtValorCompra.Clear();
        txtPercDesconto.Visible = false; // <-- A caixa de texto "Perc(%) Desconto" ficará invisível
        lblPercDesconto.Visible = false; // <-- O label "Perc(%) Desconto" ficará invisível
    }

    private void cbTipoCliente_SelectedIndexChanged(object sender, EventArgs e)
    {
        int tipoCliente = cbTipoCliente.SelectedIndex;

        if (tipoCliente == 4)
        {
            txtPercDesconto.Visible = true; // <-- A caixa de texto "Perc(%) Desconto" ficará visível
            lblPercDesconto.Visible = true; // <-- O label "Perc(%) Desconto" ficará visível
        }
        else
        {
            txtPercDesconto.Visible = false; // <-- A caixa de texto "Perc(%) Desconto" ficará invisível
            lblPercDesconto.Visible = false; // <-- O label "Perc(%) Desconto" ficará invisível
        }
    }

   private void linkJuletopi_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
   {
       string url = "https://github.com/juletopi";
       Process.Start(url);
   }

    private void txtValorCompra_KeyDown(object sender, KeyEventArgs e)
    {
        if (e.KeyCode == Keys.Enter) // <-- Vai para o campo seguinte
        {
            if (txtValorCompra.Text == " ") // <-- Verifica se o campo está vazio
            {
                MessageBox.Show("O campo está vazio!", "Alerta", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                txtValorCompra.Select(); // <-- Volta ao campo
            }
            else
            {
                txtPercDesconto.Select();
            }
        }
    }

5. Simulador de Média

Conjunto de forms que fazem parte da 1º avaliação da disciplina. Neste, foram aprendidos:

  • Criação de um forms com um menu principal e mais 3 forms para "Simular Média", "Verificar Nota Mínima" e "Verificar Exame Final".

5.1 SimuladorMedia: Janela de Menu Principal

JanelaSimuladorMediaMenuPrincipal-pic

[!NOTE]
Retirado da aula de "Atividade (14-03-24)"

using SimuladorMedia.Formularios;

namespace SimuladorMedia
{
    public partial class FormSimuladorMedia : Form
    {
        public FormSimuladorMedia()
        {
            InitializeComponent();
        }

        private void btSimularMedia_Click(object sender, EventArgs e)
        {
            FormSimularMedia form = new FormSimularMedia();
            form.ShowDialog();
        }

        private void btNotaMinima_Click(object sender, EventArgs e)
        {
            FormNotaMinima form = new FormNotaMinima();
            form.ShowDialog();
        }

        private void btVerificarMedia_Click(object sender, EventArgs e)
        {
            FormExameFinal form = new FormExameFinal();
            form.ShowDialog();
        }
    }
}

5.2 SimuladorMedia: Janela de Simulador de Média

JanelaSimuladorMedia-pic

[!NOTE]
Retirado da aula de "Atividade (14-03-24)"

private void btVerificarMedia_Click(object sender, EventArgs e)
{
    double nota1 = 0, nota2 = 0;
    double resultado;
    string nome;

    try
    {
        nota1 = Convert.ToDouble(txtNota1.Text);
        nota2 = Convert.ToDouble(txtNota2.Text);
    }
    catch (FormatException)
    {
        MessageBox.Show("Por favor, insira apenas números válidos nas notas.", "Erro de entrada", MessageBoxButtons.OK, MessageBoxIcon.Error);
        return;
    }

    nome = txtNomeAluno.Text;

    resultado = (nota1 + nota2) / 2;

    lblResultadoNota.Text = resultado.ToString();

    if (resultado >= 60)
    {
        lblResultadoNota.Text = $"A sua nota foi de {resultado} pontos.";
        lblAprovadoReprovado.Text = $"{nome}, você foi aprovado(a)!";
    }
    else
    {
        lblResultadoNota.Text = $"A sua nota foi de {resultado} pontos.";
        lblAprovadoReprovado.Text = $"{nome}, você foi reprovado(a)!";
    }
}

private void btLimpar_Click(object sender, EventArgs e)
{
    txtNomeAluno.Clear();
    txtNota1.Clear();
    txtNota2.Clear();
    lblResultadoNota.Text = "";
    lblAprovadoReprovado.Text = "";

    txtNomeAluno.Select();
}

5.3 SimuladorMedia: Janela de Nota Mínima

JanelaNotaMínima-pic

[!NOTE]
Retirado da aula de "Atividade (14-03-24)"

private void btVerificarNotaMinima_Click(object sender, EventArgs e)
{
    double mediaFinal = 0;
    double notaNecessaria = 0;
    string nome;

    mediaFinal = Convert.ToDouble(txtMediaFinal.Text);
    nome = txtNomeAluno.Text;

    notaNecessaria = (500 - 6 * mediaFinal) / 4;

    if (notaNecessaria <= 0)
    {
        lblNotaParaPassar.Text = $"Aluno(a) {nome}, você está \naprovado(a), não é necessário \nmais nota.";
    }
        else
    {
        lblNotaParaPassar.Text = $"Aluno(a) {nome}, \nvocê precisa de {notaNecessaria} pontos \npara passar.";
    }
}

private void btLimpar_Click(object sender, EventArgs e)
{
    txtNomeAluno.Clear();
    txtMediaFinal.Clear();
    lblNotaParaPassar.Text = "";

    txtNomeAluno.Select();
}

5.4 SimuladorMedia: Janela de Exame Final

JanelaExameFinal-pic

[!NOTE]
Retirado da aula de "Atividade (14-03-24)"

private void btVerificarMedia_Click(object sender, EventArgs e)
{
    double MediaFinal = 0.00;
    double NotaAposExame = 0.00;
    string nome;

    try
    {
        MediaFinal = double.Parse(txtMediaFinal.Text);
        NotaAposExame = double.Parse(txtExameFinal.Text);
    }
    catch (FormatException)
    {
        MessageBox.Show("Por favor, insira apenas números válidos nas notas.", "Erro de entrada", MessageBoxButtons.OK, MessageBoxIcon.Error);
        return;
    }
    
    nome = txtNomeAluno.Text;

    NotaAposExame = (6 * MediaFinal + 4 * NotaAposExame) / 10;

    if (NotaAposExame >= 50)
    {
        lblAprovadoReprovado.Text = $"Parabéns {nome}! \nVocê foi aprovado(a)!";
    }
    else
    {
        lblAprovadoReprovado.Text = $"Aluno(a) {nome}, você \nnão foi aprovado(a).";
    }
}

private void btLimpar_Click(object sender, EventArgs e)
{
    txtNomeAluno.Clear();
    txtMediaFinal.Clear();
    txtExameFinal.Clear();
    lblAprovadoReprovado.Text = "";

    txtNomeAluno.Select();
}

6. Calculadora de Juros

JanelaCalculadoradeJuros-pic

[!NOTE]
Retirado da aula de "Atividade (14-03-24)"

Form criado na 1º avaliação da disciplina. Neste, foram aprendidos:

  • Construção de um forms complexo com seleção única de resultado dentre diversos campos disponíveis.
namespace CalculadoraJuros
{
    public partial class CalculadoraJuros : Form
    {
        public CalculadoraJuros()
        {
            InitializeComponent();
        }

        private void btCalcular_Click(object sender, EventArgs e)
        {
            // Verificando se o combo-box foi inicializado e se há um item selecionado
            if (cbTipoCalculo != null && cbTipoCalculo.SelectedItem != null)
            {
                double montante = 0, capital = 0, taxa = 0, tempo = 0;

                // Verificando se os campos de entrada têm valores válidos
                if (!string.IsNullOrEmpty(txtMontante.Text))
                {
                    if (!double.TryParse(txtMontante.Text, out montante))
                    {
                        MessageBox.Show("Valor inválido em um dos campos! Digite um valor válido.", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        return;
                    }
                }

                if (!string.IsNullOrEmpty(txtCapital.Text))
                {
                    if (!double.TryParse(txtCapital.Text, out capital))
                    {
                        MessageBox.Show("Valor inválido em um dos campos! Digite um valor válido.", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        return;
                    }
                }

                if (!string.IsNullOrEmpty(txtTaxa.Text))
                {
                    if (!double.TryParse(txtTaxa.Text, out taxa))
                    {
                        MessageBox.Show("Valor inválido em um dos campos! Digite um valor válido.", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        return;
                    }
                }

                if (!string.IsNullOrEmpty(txtTempo.Text))
                {
                    if (!double.TryParse(txtTempo.Text, out tempo))
                    {
                        MessageBox.Show("Valor inválido em um dos campos! Digite um valor válido.", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        return;
                    }
                }

                // Realizando o cálculo com base no tipo selecionado a partir do combo-box
                switch (cbTipoCalculo.SelectedItem.ToString())
                {
                    case "Montante":
                        montante = capital * (1 + taxa * tempo);
                        if (txtMontante.Enabled)
                            txtMontante.Text = montante.ToString("F2");
                    break;

                    case "Capital":
                        capital = montante / (1 + taxa * tempo);
                        if (txtCapital.Enabled)
                            txtCapital.Text = capital.ToString("F2");
                    break;

                    case "Taxa":
                        taxa = (montante - capital) / (capital * tempo);
                        if (txtTaxa.Enabled)
                            txtTaxa.Text = (taxa * 100).ToString("F2");
                    break;

                    case "Tempo":
                        tempo = (montante - capital) / (capital * taxa);
                        if (txtTempo.Enabled)
                            txtTempo.Text = tempo.ToString("F2");
                    break;
                }

                // Calculando e exibindo os juros
                double juros = montante - capital;
                lblResultadoJuros.Text = $"{juros.ToString("F2")}%";
            }
            else
            {
                MessageBox.Show("Selecione um tipo de operação primeiro!", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }
        }

        // Limpando os campos e restaurando as configurações-padrão
        private void btLimpar_Click(object sender, EventArgs e)
        {
            // Limpando e resetando o ComboBox
            cbTipoCalculo.SelectedIndex = -1;
            cbTipoCalculo.ResetText();

            // Limpando os outros campos
            txtMontante.Clear();
            txtCapital.Clear();
            txtTaxa.Clear();
            txtTempo.Clear();

            // Restaurando a cor de fundo padrão dos campos de entrada
            txtMontante.BackColor = SystemColors.Window;
            txtCapital.BackColor = SystemColors.Window;
            txtTaxa.BackColor = SystemColors.Window;
            txtTempo.BackColor = SystemColors.Window;

            // Habilitando a edição dos campos
            txtMontante.ReadOnly = false;
            txtMontante.TabStop = true;
            txtCapital.ReadOnly = false;
            txtCapital.TabStop = true;
            txtTaxa.ReadOnly = false;
            txtTaxa.TabStop = true;
            txtTempo.ReadOnly = false;
            txtTempo.TabStop = true;

            // Limpando o label de resultado dos juros
            lblResultadoJuros.Text = "";
        }

        // Mudando a cor de fundo do campo selecionado a partir do
        // combo-box e desabilitando a edição dos outros campos
        private void cbTipoCalculo_SelectedIndexChanged(object sender, EventArgs e)
        {
            // Verificando se um item foi selecionado no combo-box
            if (cbTipoCalculo.SelectedItem != null)
            {
                // Restaurando a cor de fundo padrão dos campos de entrada
                txtMontante.BackColor = SystemColors.Window;
                txtCapital.BackColor = SystemColors.Window;
                txtTaxa.BackColor = SystemColors.Window;
                txtTempo.BackColor = SystemColors.Window;

                // Identificando qual item foi selecionado no combo-box
                switch (cbTipoCalculo.SelectedItem.ToString())
                {
                    case "Montante":
                        // Destacando o campo Montante e limpando os demais campos
                        txtMontante.BackColor = Color.LightGreen;
                        txtMontante.Clear();
                        txtCapital.Clear();
                        txtTaxa.Clear();
                        txtTempo.Clear();

                        // Habilitando a edição apenas do campo Montante
                        txtMontante.ReadOnly = true;
                        txtMontante.TabStop = false;
                        txtCapital.ReadOnly = false;
                        txtCapital.TabStop = true;
                        txtTaxa.ReadOnly = false;
                        txtTaxa.TabStop = true;
                        txtTempo.ReadOnly = false;
                        txtTempo.TabStop = true;

                        // Limpando o label de resultado dos juros
                        lblResultadoJuros.Text = "";
                        break;

                    case "Capital":
                        // Destacando o campo Capital e limpando os demais campos
                        txtCapital.BackColor = Color.LightGreen;
                        txtMontante.Clear();
                        txtCapital.Clear();
                        txtTaxa.Clear();
                        txtTempo.Clear();

                        // Habilitando a edição apenas do campo Capital
                        txtMontante.ReadOnly = false;
                        txtMontante.TabStop = true;
                        txtCapital.ReadOnly = true;
                        txtCapital.TabStop = false;
                        txtTaxa.ReadOnly = false;
                        txtTaxa.TabStop = true;
                        txtTempo.ReadOnly = false;
                        txtTempo.TabStop = true;

                        // Limpando o label de resultado dos juros
                        lblResultadoJuros.Text = "";
                        break;

                    case "Taxa":
                        // Destacando o campo Taxa e limpando os demais campos
                        txtTaxa.BackColor = Color.LightGreen;
                        txtMontante.Clear();
                        txtCapital.Clear();
                        txtTaxa.Clear();
                        txtTempo.Clear();

                        // Habilitando a edição apenas do campo Taxa
                        txtMontante.ReadOnly = false;
                        txtMontante.TabStop = true;
                        txtCapital.ReadOnly = false;
                        txtCapital.TabStop = true;
                        txtTaxa.ReadOnly = true;
                        txtTaxa.TabStop = false;
                        txtTempo.ReadOnly = false;
                        txtTempo.TabStop = true;

                        // Limpando o label de resultado dos juros
                        lblResultadoJuros.Text = "";
                        break;

                    case "Tempo":
                        // Destacando o campo Tempo e limpando os demais campos
                        txtTempo.BackColor = Color.LightGreen;
                        txtMontante.Clear();
                        txtCapital.Clear();
                        txtTaxa.Clear();
                        txtTempo.Clear();

                        // Habilitando a edição apenas do campo Tempo
                        txtMontante.ReadOnly = false;
                        txtMontante.TabStop = true;
                        txtCapital.ReadOnly = false;
                        txtCapital.TabStop = true;
                        txtTaxa.ReadOnly = false;
                        txtTaxa.TabStop = true;
                        txtTempo.ReadOnly = true;
                        txtTempo.TabStop = false;

                        // Limpando o label de resultado dos juros
                        lblResultadoJuros.Text = "";
                        break;
                }
            }
        }
    }
}

7. Exemplos de Formatação de Caracteres

[!NOTE]
Retirado da aula de "AppExemploString"

Nesta aula foram aprendidos:

  • Substituição de caracteres e palavras em uma string usando Replace.
  • Concatenação de strings usando o operador +.
  • Conversão de strings para maiúsculas e minúsculas usando ToUpper e ToLower.
  • Remoção de espaços em branco no início e no final de uma string usando Trim.
  • Comparação de strings usando Equals.
  • Manipulação de partes de uma string usando Substring.
  • Separação e formatação de informações em uma string usando Split.
namespace AppExemploString
{
    internal class Program
    {
        static void Main(string[] args)
        {
            // Exemplos de Formatação de Caracteres

            // Exemplo 1: Substituindo caracteres na string
            string str = "Hello";
            string resultado = str.Replace("l", "w");

            Console.WriteLine(str); // <-- Texto original
            Console.WriteLine(resultado); // <-- Texto com caracteres substituídos
            Console.WriteLine();

            // Exemplo 2: Substituindo palavras na string
            string str1 = "Leite em pó";
            string resultado2 = str1.Replace("Leite", "Achocolatado");

            Console.WriteLine(str1); // <-- Texto original
            Console.WriteLine(resultado2); // <-- Texto com palavras substituídas
            Console.WriteLine();

            // Exemplo 3: Concatenando strings
            string str3 = "Olá";
            string textoadd = str3 + " Mundo!";

            Console.WriteLine(textoadd); // <-- Texto combinado
            Console.WriteLine();

            // Exemplo 4: Concatenando strings com números
            int n = 3;
            string textoadd2 = "A " + n + "º palavra";

            Console.WriteLine(textoadd2); // <-- Texto com número
            Console.WriteLine();

            // Exemplo 5: Convertendo para maiúsculas
            string str4 = "hello";
            string maiusculo = str4.ToUpper();

            Console.WriteLine(str4); // <-- Texto original
            Console.WriteLine(maiusculo); // <-- Texto em maiúsculo
            Console.WriteLine();

            // Exemplo 6: Convertendo para minúsculas
            string str5 = "HELLO";
            string minusculo = str5.ToLower();

            Console.WriteLine(str5); // <-- Texto original
            Console.WriteLine(minusculo); // <-- Texto em minúsculo
            Console.WriteLine();

            // Exemplo 7: Removendo espaços em branco
            string str6 = "Vamos aprender Java? >:) ";
            Console.WriteLine(str6); // <-- Texto original

            string res = str6.Trim();
            Console.WriteLine(res); // <-- Texto sem espaços em branco
            Console.WriteLine();

            // Exemplo 8: Comparando strings
            string str7 = "Hello";
            string str8 = "Hell0";

            bool bol1 = str7.Equals("Hello"); // <-- Comparando com uma string literal
            bool bol2 = str7.Equals(str8); // <-- Comparando com outra string

            Console.WriteLine("1: " + bol1);
            Console.WriteLine("2: " + bol2);
            Console.WriteLine();

            // Exemplo 9: Manipulando partes de uma string
            string tel = "6940028922";

            string ddd = tel.Substring(0, 2); // <-- Obtendo os primeiros dígitos
            string num1 = tel.Substring(2, 4); // <-- Obtendo parte do meio
            string num2 = tel.Substring(6); // <-- Obtendo os últimos dígitos

            string mask = $"({ddd}){num1}-{num2}";
            Console.WriteLine(mask); // <-- Texto formatado

            string tel2 = "(69) 4002-8922";

            string ddd2 = tel2.Substring(1, 2); // <-- Obtendo os primeiros dígitos
            string num3 = tel2.Substring(5, 4); // <-- Obtendo parte do meio
            string num4 = tel2.Substring(10); // <-- Obtendo os últimos dígitos

            string noMask = ddd2 + num3 + num4;
            Console.WriteLine(noMask); // <-- Texto sem máscara
            Console.WriteLine();

            // Exemplo 10: Separando e formatando informações
            string nome1 = "Carmen Gizelle/90/85/70";
            string nome2 = "Ruben Laerte/80/80/45";
            string nome3 = "Maxwell Kelvin/75/80/40";
            string nome4 = "Tobias Arruda/78/85/90";

            string[] nomes = { nome1, nome2, nome3, nome4 };

            foreach (string aluno in nomes)
            {
                string[] info = aluno.Split('/');

                string nome = info[0];
                string matematica = info[1];
                string portugues = info[2];
                string ciencias = info[3];

                Console.WriteLine($"Nome: {nome}");
                Console.WriteLine($"Matemática: {matematica}");
                Console.WriteLine($"L. Portuguesa: {portugues}");
                Console.WriteLine($"Ciências: {ciencias}");
                Console.WriteLine();
            }

            // Atividade proposta em sala: Conversão de data
            Console.Write("Digite a data no formato dd/mm/aaaa: ");
            string data = Console.ReadLine();

            string[] partesData = data.Split('/');
            string dia = partesData[0];
            string mes = partesData[1];
            string ano = partesData[2];

            string dataAmericana = $"{ano}/{mes}/{dia}";

            Console.WriteLine("\nData no formato americano: " + dataAmericana);

            Console.ReadKey();
        }
    }
}

8. Simulador de Comissão da Concessionária Ômega

JanelaSimulacaoComissaoVendedorPadrao-pic JanelaSimulacaoComissaoVendedorMaster-pic

[!NOTE]
Retirado da aula de "Atividade (28-03-24)"

Form criado na 2º avaliação da disciplina. Neste, foram aprendidos:

  • Criação de um forms complexo com um múltiplas mudanças dinâmicas de características visuais para melhor interatividade com o usuário.
namespace Atividade__28_03_24_
{
    public partial class FormSimulacaoComissao : Form
    {
        public FormSimulacaoComissao()
        {
            InitializeComponent();
        }

        private void btSimular_Click(object sender, EventArgs e)
        {
            // Verificando se um cargo foi selecionado
            if (cbSelecaoCargo.SelectedIndex == -1)
            {
                MessageBox.Show("Por favor, selecione um cargo.", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return;
            }

            // Verificando se todos os campos estão preenchidos
            if (string.IsNullOrEmpty(txtSalario.Text) || string.IsNullOrEmpty(txtMeta.Text) || string.IsNullOrEmpty(txtVendas.Text))
            {
                MessageBox.Show("Por favor, preencha todos os campos corretamente!", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return;
            }

            double salario, meta, vendas;

            // Verificando se os campos de entrada tem valores válidos
            if (!double.TryParse(txtSalario.Text, out salario) || !double.TryParse(txtVendas.Text, out vendas) || !double.TryParse(txtMeta.Text, out meta))
            {
                MessageBox.Show("Valor inválido em um dos campos! Digite um valor válido.", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }

            // Calculando a comissão de acordo com o cargo
            string cargo = cbSelecaoCargo.SelectedItem.ToString();
            double comissao = 0, bonus = 0;

            switch (cargo)
            {
                case "Vendedor Junior":
                    comissao = vendas * 0.04;
                    bonus = salario * 0.02;
                    break;
                case "Vendedor Padrão":
                    comissao = vendas * 0.06;
                    bonus = salario * 0.02;
                    break;
                case "Vendedor Master":
                    comissao = vendas * 0.08;
                    bonus = salario * 0.02;
                    break;
                case "Supervisor de Vendas":
                    comissao = vendas * 0.10;
                    bonus = salario * 0.02 + vendas * 0.01;
                    break;
                case "Gerente":
                    comissao = vendas * 0.10;
                    bonus = salario * 0.02 + vendas * 0.02;
                    break;
            }

            // Verificando se a meta foi atingida
            if (vendas >= meta * 0.65)
            {
                // Verificando se a meta da concessionária foi atingida
                if (vendas >= meta * 0.85 || cargo == "Supervisor de Vendas" || cargo == "Gerente")
                {
                    double comissaoTotal = comissao + bonus;
                    double salarioFinal = salario + comissaoTotal;

                    lblResultadosComissao.Visible = true;
                    lblResultadosComissao.Text =
                    $"Comissão: {comissao.ToString("C2")}\n" +
                    $"Bônus: {bonus.ToString("C2")}\n" +
                    $"Comissão Total: {comissaoTotal.ToString("C2")}\n" +
                    $"Salário Final: {salarioFinal.ToString("C2")}";
                }
                else
                {
                    MessageBox.Show("A concessionária não atingiu a meta de vendas para pagar a comissão sobre as vendas da concessionária.", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
            }
            else
            {
                MessageBox.Show("O vendedor não atingiu 65% da sua meta de vendas.", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }

        private void btLimpar_Click(object sender, EventArgs e)
        {
            // Limpando e resetando o ComboBox
            cbSelecaoCargo.SelectedIndex = -1;
            cbSelecaoCargo.ResetText();

            // Limpando os outros campos
            txtSalario.Clear();
            txtVendas.Clear();
            txtMeta.Clear();

            // Restaurando a cor de fundo padrão dos campos de entrada
            txtSalario.BackColor = SystemColors.Window;
            txtVendas.BackColor = SystemColors.Window;
            txtMeta.BackColor = SystemColors.Window;

            // Limpando e restaurando os labels
            lblResultadosComissao.Visible = false;
            lblSubtitulo.Visible = false;
            lblSubtitulo.AutoSize = false;
            lblSubtitulo.TextAlign = ContentAlignment.MiddleCenter;
            lblSubtitulo.Text = "{Texto de cargo selecionado}";
        }

        private void lblLinkJuletopi_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            string url = "https://github.com/juletopi";
            Process.Start(url);
        }

        private void cbSelecaoCargo_SelectedIndexChanged(object sender, EventArgs e)
        {
            // Mudando a cor de fundo dos campos de acordo com o cargo
            switch (cbSelecaoCargo.SelectedIndex)
            {
                case 0: // Vendedor Junior
                    txtSalario.BackColor = Color.LightGray;
                    txtMeta.BackColor = Color.LightGray;
                    txtVendas.BackColor = Color.LightGray;
                    txtSalario.Clear();
                    txtVendas.Clear();
                    txtMeta.Clear();
                    lblResultadosComissao.Visible = false;
                    lblSubtitulo.Visible = true;
                    lblSubtitulo.AutoSize = false;
                    lblSubtitulo.Text = "Cargo: Vendedor Junior";
                    break;
                case 1: // Vendedor Padrão
                    txtSalario.BackColor = Color.LightGreen;
                    txtMeta.BackColor = Color.LightGreen;
                    txtVendas.BackColor = Color.LightGreen;
                    txtSalario.Clear();
                    txtVendas.Clear();
                    txtMeta.Clear();
                    lblResultadosComissao.Visible = false;
                    lblSubtitulo.Visible = true;
                    lblSubtitulo.AutoSize = false;
                    lblSubtitulo.TextAlign = ContentAlignment.MiddleCenter;
                    lblSubtitulo.Text = "Cargo: Vendedor Padrão";
                    break;
                case 2: // Vendedor Master
                    txtSalario.BackColor = Color.LightBlue;
                    txtMeta.BackColor = Color.LightBlue;
                    txtVendas.BackColor = Color.LightBlue;
                    txtSalario.Clear();
                    txtVendas.Clear();
                    txtMeta.Clear();
                    lblResultadosComissao.Visible = false;
                    lblSubtitulo.Visible = true;
                    lblSubtitulo.AutoSize = false;
                    lblSubtitulo.TextAlign = ContentAlignment.MiddleCenter;
                    lblSubtitulo.Text = "Cargo: Vendedor Master";
                    break;
                case 3: // Supervisor de Vendas
                    txtSalario.BackColor = Color.LightPink;
                    txtMeta.BackColor = Color.LightPink;
                    txtVendas.BackColor = Color.LightPink;
                    txtSalario.Clear();
                    txtVendas.Clear();
                    txtMeta.Clear();
                    lblResultadosComissao.Visible = false;
                    lblSubtitulo.Visible = true;
                    lblSubtitulo.AutoSize = false;
                    lblSubtitulo.TextAlign = ContentAlignment.MiddleCenter;
                    lblSubtitulo.Text = "Cargo: Surpevisor de Vendas";
                    break;
                case 4: // Gerente
                    txtSalario.BackColor = Color.LightSalmon;
                    txtMeta.BackColor = Color.LightSalmon;
                    txtVendas.BackColor = Color.LightSalmon;
                    txtSalario.Clear();
                    txtVendas.Clear();
                    txtMeta.Clear();
                    lblResultadosComissao.Visible = false;
                    lblSubtitulo.Visible = true;
                    lblSubtitulo.AutoSize = false;
                    lblSubtitulo.TextAlign = ContentAlignment.MiddleCenter;
                    lblSubtitulo.Text = "Cargo: Gerente";
                    break;
                default:
            break;
            }
        }
    }
}

👤 Autor



Feito com 🖤 por Juletopi.

About

📟 • Repositório com os conteúdos de Linguagem de Programação Visual, utilizando o Visual Studio, a linguagem CSharp e a estrutura de interface do Windows Forms como ferramentas de aprendizado.

Topics

Resources

License

Stars

Watchers

Forks

Languages