Ofereço ajuda em Java, C/C++, Python, C#, LISP, AutoLisp, AutoCAD
Ofereço ajuda em PHP, Python, C#, JavaScript, Laravel, Google Ads e SEO

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

MySQL ::: Dicas & Truques ::: Chaves, Índices e Restrições de Integridade Referencial

Como criar chaves primárias compostas em uma tabela do MySQL

Quantidade de visualizações: 1726 vezes
Sabemos que o uso do atributo PRIMARY KEY (PK) permite marcar um campo de uma tabela MySQL como chave primária. Assim, este campo não poderá ter valores repetidos nem conter o valor NULL.

Há, no entanto, situações nas quais precisamos marcar mais de um campo como chave primária, ou seja, a chave primária é composta de dois ou mais campos. Estas situações surgem nos cenários em que temos relacionamentos N x N (muitos para muitos) e uma tabela associativa que represente o relacionamento.

Um exemplo disso é a relação autor-livro: um autor pode escrever vários livros e um livro pode ser escrito por mais um autor (vários autores em conjunto). Mas, o mesmo autor não pode aparecer no mesmo livro mais de uma vez. Vamos representar isso passo-a-passo.

Comece criando a tabela autores. Veja o comando CREATE TABLE completo para esta tarefa:

CREATE TABLE autores(
  id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
  nome VARCHAR(45) NOT NULL,
  email VARCHAR(45) NOT NULL,
  PRIMARY KEY(id)
)
ENGINE = InnoDB;


Este comando CREATE TABLE vai gerar a seguinte estrutura:

Field    Type               Null   Key    Default   Extra     
id       int(10) unsigned   NO     PRI    -         auto_increment
nome     varchar(45)        NO            -
email    varchar(45)        NO            -
Note que defini o engine como InnoDB, uma vez que este tipo de armazenamento permite o uso de restrições de chaves estrangeiras, diferente do armazenamento MyISAM.

Vamos agora criar a tabela livros. Veja o comando CREATE TABLE completo:

CREATE TABLE livros(
  id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
  titulo VARCHAR(45) NOT NULL,
  paginas INTEGER UNSIGNED NOT NULL,
  PRIMARY KEY (id)
)
ENGINE = InnoDB;

Este comando CREATE TABLE vai gerar a seguinte estrutura:

Field     Type                Null    Key   Default    Extra
id        int(10) unsigned    NO      PRI   -          auto_increment
titulo    varchar(45)         NO            -
paginas   int(10) unsigned    NO            -
Pronto. Agora já podemos criar a tabela de ligação ou associativa que fará a ponte entre o autor e o livro que ele escreveu. Veja o comando CREATE TABLE que cria a tabela autores_livros:

CREATE TABLE autores_livros(
  id_autor int(10) unsigned NOT NULL,
  id_livro int(10) unsigned NOT NULL,
  PRIMARY KEY(id_autor,id_livro),
  KEY FK_autores_livros_2(id_livro),
  CONSTRAINT FK_autores_livros_2 FOREIGN KEY(id_livro) REFERENCES livros(id),
  CONSTRAINT FK_autores_livros_1 FOREIGN KEY(id_autor) REFERENCES autores(id)
) ENGINE=InnoDB

Este comando CREATE TABLE vai gerar a seguinte estrutura:

Field      Type               Null   Key    Default     Extra        
id_autor   int(10) unsigned   NO     PRI    -           -
id_livro   int(10) unsigned   NO     PRI    -           -
Note que nesta tabela eu criei as chaves estrangeiras (FOREIGN KEY) e apliquei as restrições de integridade referencial, ou seja, não será possível excluir um autor ou livro se seus ids estiverem registrados na tabela autores_livros.

Agora experimente inserir dados nas tabelas autores e livros. Em seguida faça o relaciomento na tabela autores_livros. Tente repetir o id do autor para o mesmo livro. Imediatamente o MySQL recusará a inserção com a mensagem de erro:

Error 1062: Duplicate entry '2-2' for key 1

E, como usamos chaves estrangeiras na tabela autores_livros, ao tentarmos excluir um livro já relacionado com um autor, teremos a seguinte mensagem de erro:

Cannot delete or update a parent row: a foreign key constraint fails (`estudos/autores_livros`, CONSTRAINT `FK_autores_livros_2` FOREIGN KEY (`id_livro`) REFERENCES `livros` (`id`))

Veja mais dicas nesta seção para aprender mais sobre chaves estrangeiras e restrições de integridade referencial.


PHP ::: Dicas & Truques ::: Formulários

Como obter o valor do radio button selecionado no formulário HTML usando PHP

Quantidade de visualizações: 50854 vezes
Controles do tipo radio button são úteis quando o usuário deverá marcar apenas UMA entre as várias opções fornecidas. Veja um exemplo abaixo:

<form name="cadastro" method="post" action="testes.php">
  <b></b>Qual sua linguagem favorita?</b><br>
  <input name="linguagem" type="radio" 
    value="Java" checked>Java<br>
  <input type="radio" name="linguagem" 
    value="Delphi">Delphi<br>
  <input type="radio" name="linguagem" 
    value="C++">C++<br>
  <input type="radio" name="linguagem" 
    value="Python">Python<br>
  <input type="submit" value="Enviar!">
</form>

Lembre-se de que um grupo de radio button relacionados deverá ter o mesmo valor para a propriedade name.

Para obter o valor do radio button selecionado, podemos usar o seguinte código PHP:

<?php
  // Obtém o radio button selecionado
  $opcao = $_POST["linguagem"];
  
  // Exibe o resultado
  echo "Sua linguagem favorita é: " . $opcao;
?>



PHP ::: Dicas & Truques ::: Arquivos e Diretórios

Como ler e processar os dados de um arquivo CSV usando a função fgetcsv() do PHP

Quantidade de visualizações: 26952 vezes
Arquivos CSV são arquivos texto cujas linhas possuem valores separados por vírgulas (ou ponto-e-vírgula, dois pontos, etc). As informações contidas em tais arquivos podem ser lidas usando-se a função fgetcsv(). Esta função recebe um ponteiro para um arquivo, o tamanho da maior linha de texto no arquivo (forneça 0 se não quiser ter este limite em seu código) e o caractere de delimitação (no exemplo eu usei ponto-e-vírgula).

Observe a estrutura do seguinte arquivo CSV:

23;OSMAR J SILVA;AV. LESTE, 54;GOIANIA;GO
19;MARCOS DE PAULA;RUA L, 523;SÃO PAULO;SP


As informações deste arquivo podem ser lidas usando-se o código abaixo:

<?php
  // nome do arquivo
  $arquivo = 'dados.csv';
 
  // ponteiro para o arquivo
  $fp = fopen($arquivo, "r");

  // processa os dados do arquivo
  while(($dados = fgetcsv($fp, 0, ";")) !== FALSE){
    $quant_campos = count($dados);
    for($i = 0; $i < $quant_campos; $i++){
      echo $dados[$i] . "<br>";
    }
    echo "<br>";
  }

  fclose($fp);
?>

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

23
OSMAR J SILVA
AV. LESTE, 54
GOIANIA
GO

19
MARCOS DE PAULA
RUA L, 523
SÃO PAULO
SP


Python ::: Desafios e Lista de Exercícios Resolvidos ::: Arrays e Matrix (Vetores e Matrizes)

Exercícios Resolvidos de Python - Como retornar o primeiro elemento de um vetor em Python

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

Escreva um programa Python que mostra como acessar e retornar o primeiro elemento de um vetor (array) em Python.

Sua saída deverá ser parecida com:

Os elementos do vetor são: [9, 5, 3, 2, 4, 8]
O primeiro elemento do array é: 9 
Resposta/Solução:

Veja a resolução comentada deste exercício usando Python:

# função principal do programa
def main():
  # vamos criar um array de inteiros
  valores = [9, 5, 3, 2, 4, 8]
  print("Os elementos do vetor são: {0}".format(valores))
    
  # agora vamos retornar o primeiro elemento do vetor
  primeiro = valores[0]
    
  # e mostramos o resultado
  print("O primeiro elemento do array é: {0}".format(primeiro))
  
if __name__== "__main__":
  main()



Portugol ::: Desafios e Lista de Exercícios Resolvidos ::: Estruturas de Controle

Exercícios Resolvidos de Portugol - Escreva um programa que leia o ano de nascimento de um rapaz e mostre a sua situação em relação ao alistamento militar

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

Escreva um programa que leia o ano de nascimento de um rapaz e mostre a sua situação em relação ao alistamento militar.

- Se estiver antes dos 18 anos, mostre em quantos anos faltam para o alistamento.
- Se já tiver depois dos 18 anos, mostre quantos anos já se passaram do alistamento.

Sua saída deverá ser parecida com:

Informe o ano atual: 2025
Informe o ano do seu nascimento: 1980

Você tem 45 anos.
Já se passaram 27 anos do alistamento militar.

Informe o ano atual: 2025
Informe o ano do seu nascimento: 2007

Você tem 18 anos.
Você já tem idade suficiente para fazer o alistamento militar.

Informe o ano atual: 2025
Informe o ano do seu nascimento: 2009

Você tem 16 anos.
Faltam 2 anos para você fazer o alistamento militar.
Resposta/Solução:

Veja a resolução comentada deste exercício usando Portugol Web Studio:

programa {
  funcao inicio() {
    // variáveis usadas na resolução do problema
    inteiro ano_nasc, ano_atual, idade, anos_faltam, anos_passaram
		
    // vamos pedir para o usuário informar o ano atual
    escreva("Informe o ano atual: ")
    leia(ano_atual)

    // vamos pedir para o usuário informar o ano de nascimento
    escreva("Informe o ano do seu nascimento: ")
    leia(ano_nasc)

    // vamos calcular a idade do usuário 
    idade = ano_atual - ano_nasc

    // vamos calcular os anos que faltam para o alistamento
    anos_faltam = 18 - idade

    // vamos calcular os anos que já se passaram do alistamento
    anos_passaram = idade - 18

    // vamos mostrar os resultados
    se (idade < 18) {
      escreva("\nVocê tem " + idade + " anos.")
      escreva("\nFaltam " + anos_faltam + 
        " anos para você fazer o alistamento militar.")
    }
    senao se (idade == 18) {
      escreva("\nVocê tem " + idade + " anos.")
      escreva("\nVocê já tem idade para o alistamento militar.")
    }
    senao {
      escreva("\nVocê tem " + idade + " anos.")
      escreva("\nJá se passaram " + anos_passaram +
        " anos do alistamento militar.")
    }
  }
}



C# ::: Dicas & Truques ::: Strings e Caracteres

Como substituir todas as ocorrências de caracteres ou substrings em uma string C# usando o método Replace() da classe String

Quantidade de visualizações: 10804 vezes
Em várias situações nós precisamos substituir as ocorrências de uma letra ou parte de palavras ou frases. Para isso nós podemos usar o método Replace() da classe String da linguagem C#. Este método recebe o caractere ou substring a ser substituído e o novo caractere ou substring, e retorna uma nova String.

Veja um trecho de código C# que mostra como substituir todas
as ocorrências de caracteres ou substrings em uma string:

using System;

namespace Estudos {
  class Program {
    static void Main(string[] args) {
      // uma frase
      string frase = "Gosto muito de C# pois C# é bom demais";

      // substitui "C#" por "VB.NET"
      string frase2 = frase.Replace("C#", "VB.NET");

      // mostra o resultado
      Console.WriteLine("Frase original: " + frase);
      Console.WriteLine("Com substituições: " + frase2);

      Console.WriteLine("\n\nPressione uma tecla para sair...");
      Console.ReadKey();
    }
  }
}

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

Frase original: Gosto muito de C# pois C# é bom demais
Com substituições: Gosto muito de VB.NET pois VB.NET é bom demais


C++ Builder ::: VCL - Visual Component Library ::: TEdit

Como obter a quantidade de caracteres em um TEdit usando a função GetTextLen() do C++ Builder

Quantidade de visualizações: 6266 vezes
Em algumas ocasiões nós precisamos descobrir a quantidade de caracteres contidos em uma caixa de texto do tipo TEdit. Para isso podemos usar o método GetTextLen() do C++ Builder, definido originalmente na classe TControl. Esta função retorna um valor inteiro contendo o tamanho do texto da caixa de texto.

Veja um exemplo do uso do método GetTextLen() no trecho de código a seguir:

void __fastcall TForm3::Button2Click(TObject *Sender)
{
  // vamos obter a quantidade de caracteres no TEdit
  int tamanho = Edit1->GetTextLen();

  // vamos mostrar o resultado
  ShowMessage("O Edit contém " + IntToStr(tamanho) + " caracteres.");
}

Ao executar este exemplo você terá um resultado parecido com:

O Edit contém 5 caracteres.


PHP ::: Dicas & Truques ::: Arrays e Matrix (Vetores e Matrizes)

Como verificar a existência de um valor em um array PHP usando a função in_array()

Quantidade de visualizações: 9052 vezes
A função in_array() da linguagem PHP nos permite pesquisar um valor em um vetor (array). Se o valor for encontrado, o valor TRUE é retornado. Caso contrário o valor FALSE é retornado.

Veja um exemplo PHP no qual temos um vetor de strings com nomes de pessoas e queremos encontrar a pessoa com o nome "Victor":

<?php
/*
  Este exemplo mostra como verificar a existência
  de um valor em um array usando in_array().
*/

$pessoas[0] = "Carlos";
$pessoas[1] = "Juliana";
$pessoas[2] = "Igor";
$pessoas[3] = "Marcelo";
$pessoas[4] = "Amélia";

if(in_array("Victor", $pessoas)){
  echo "O valor pesquisado foi encontrado no array.";
}
else{
  echo "O valor pesquisado NÃO foi encontrado no array.";
}
?>

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

O valor pesquisado NÃO foi encontrado no array.


Java ::: Pacote java.awt.event ::: KeyEvent

Java Swing - Como obter o código da tecla pressionada usando o método getKeyCode() da classe KeyEvent do Java

Quantidade de visualizações: 4571 vezes
O método getKeyCode() da classe KeyEvent é usado quando queremos obter o código da tecla pressionada durante um evento KEY_PRESSED ou KEY_RELEASED. Para o evento KEY_TYPED, o keyCode é VK_UNDEFINED.

Veja um trecho de código no qual usamos o método getKeyCode() para obter e informar o código da tecla pressionada durante um evento keyPressed:

package estudos;

import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JFrame;
import javax.swing.JOptionPane;

public class Janela extends JFrame implements KeyListener{
  public Janela(){
    super("Eventos do Teclado");
    Container c = getContentPane();
    FlowLayout layout = new FlowLayout(FlowLayout.LEFT);
    c.setLayout(layout);
    
    // vamos adicionar o objeto listener 
    addKeyListener(this);

    setSize(350, 250);
    setVisible(true);
  }
    
  @Override
  public void keyPressed(KeyEvent e){
    // vamos obter o código da tecla pressionada
    int codigo = e.getKeyCode();
    JOptionPane.showMessageDialog(null, "O código da tecla pressionada é: " + codigo);  
  }
    
  @Override
  public void keyReleased(KeyEvent e){
    // sem implementação
  }

  @Override
  public void keyTyped(KeyEvent e){
    // sem implementação
  }   
  
  public static void main(String args[]){
    Janela j = new Janela();
    j.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  }
}

Ao executar este código e pressionarmos uma tecla nós teremos o seguinte resultado:

O código da tecla pressionada é: 65

É importante observar que o código da tecla pode ser obtido somente nos eventos keyPressed e keyReleased. Para o evento keyTyped o retorno do método getKeyCode() é VK_UNDEFINED.


C ::: Dicas & Truques ::: Strings e Caracteres

Como acessar os caracteres de uma string individualmente usando índices na linguagem C

Quantidade de visualizações: 9693 vezes
Como em C uma string é vetor (array) de caracteres, tais caracteres podem ser acessados por meio de seu índice no vetor (um valor inteiro começando em 0). Este trecho de código mostra como esta tarefa pode ser realizada:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
int main(int argc, char *argv[]){
  char palavra[] = "Arquivo";
 
  // vamos acessar o primeiro caractere da string
  char letra = palavra[0];
  printf("O primeiro caractere e %c\n", letra);
 
  // vamos acessar o quinto caractere da string
  letra = palavra[4];
  printf("O quinto caractere e %c\n", letra);
 
  puts("\n\n");
  system("PAUSE");
  return 0;
}

Ao executarmos este códigos nós teremos o seguinte resultado:

O primeiro caractere e A
O quinto caractere e i

Carregar Publicações Anteriores


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

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


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