Lista de Exercícios Resolvidos: Java | Python | VisuAlg | Portugol | C | C# | VB.NET | C++
Você está aqui: MySQL ::: Dicas & Truques ::: Chaves, Índices e Restrições de Integridade Referencial

Chaves primárias: Entenda e aprenda a usar o atributo PRIMARY KEY para definir chaves primárias para suas tabelas MySQL

Quantidade de visualizações: 5393 vezes
A chave primária de uma tabela é uma coluna (ou uma combinação de colunas) usada como um identificador único dos registros nessa tabela. Em geral, o nome do campo que atuará como chave primária recebe o nome de "id", embora seja frequente nomes tais como "idCliente", "idLancamento", etc. Minha sugestão é que use sempre "id", uma vez que, um campo chamado "id" em uma tabela "clientes" deixa claro que tal campo representa o id (código) do cliente.

O mais importante a aprender sobre chaves primárias é que, se um campo for marcado como tal, dois ou mais registros na tabela jamais terão o mesmo valor para este campo. Além disso, o campo sempre terá um valor, uma vez que o atributo NULL não é permitido para campos marcados como chaves primárias.

Veja um comando CREATE TABLE que cria uma tabela chamada "livros" e define o campo "id" como chave primária:

CREATE TABLE livros(
  id int(10) unsigned NOT NULL auto_increment,
  titulo varchar(45) NOT NULL,
......


Este comando CREATE TABLE gera a seguinte estrutura:

Field    Type               Null   Key   Default   Extra
id       int(10) unsigned   NO     PRI   NULL      auto_increment
titulo   varchar(45)        NO           NULL  
autor    varchar(45)        NO           NULL  
preco    double             NO           NULL
Aqui o campo id foi marcado como auto-incremento. Isso significa que o MySQL se encarregará de gerar os valores para tal campo. Em uma tabela recém-criada, o valor do campo começará em 1 e será incrementado em 1 a cada registro inserido.

Veja agora um comando INSERT que insere um novo registro nesta tabela:

INSERT INTO livros VALUES(NULL, 'JavaScript Avançado', 'Osmar J. Silva', 54.23);
......


Note que forneci o valor NULL para o campo id. Isso instrui o MySQL a gerar o próximo valor para o campo auto-incremento. É possível fornecer um valor para este campo. Mas tenha cuidado. Se outro registro possuir valor igual o MySQL abortará a inserção com a seguinte mensagem de erro:

Error 1062: Duplicate entry '4' for key 1

Link para compartilhar na Internet ou com seus amigos:

Java ::: Desafios e Lista de Exercícios Resolvidos ::: Recursão (Recursividade)

Exercícios Resolvidos de Java - Um método recursivo que calcula o MDC (máximo divisor comum) entre dois números inteiros

Quantidade de visualizações: 8313 vezes
Exercício Resolvido de Java - Um método recursivo que calcula o MDC (máximo divisor comum) entre dois números inteiros

Pergunta/Tarefa:

O máximo divisor comum ou MDC (mdc) entre dois ou mais números inteiros é o maior número inteiro que é fator de tais números. Por exemplo, os divisores comuns de 12 e 18 são 1, 2, 3 e 6, logo mdc(12, 18) = 6. A definição abrange qualquer número de termos, por exemplo mdc(10, 15, 25, 30) = 5.

O cálculo do MDC entre x e y pode ser feito recursivamente da seguinte forma: Se y for igual a 0, então mdc(x, y) = x. Caso contrário, mdc(x, y) = mdc(y, x % y), no qual % é o operador de módulo (restante da divisão inteira).

Escreva um método recursivo que receba dois inteiros e calcule o mdc. Seu método deverá possuir a seguinte assinatura:

public static int mdc(int x, int y){
  // sua implementação aqui
}
Sua saída deverá ser parecida com:

Informe o primeiro inteiro: 12
Informe o segundo inteiro: 18
O MDC dos valores 12 e 18 é 6
Resposta/Solução:

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

package exercicio;

import java.util.Scanner;

public class Exercicio {
  public static void main(String[] args) {
    // cria um novo objeto da classe Scanner
    Scanner entrada = new Scanner(System.in);
    
    // vamos solicitar dois valores inteiros
    System.out.print("Informe o primeiro inteiro: ");
    // lê o primeiro inteiro
    int a = Integer.parseInt(entrada.nextLine());
    // solicita o segundo inteiro
    System.out.print("Informe o segundo inteiro: ");
    // lê o segundo inteiro
    int b = Integer.parseInt(entrada.nextLine());
......



Java ::: Pacote java.lang ::: Character

Como usar a classe Character da linguagem Java para tratar caracteres individuais em seus programas

Quantidade de visualizações: 6950 vezes
A classe Character, uma classe pública e final (ou seja, não é possível fazer subclasse desta classe) e presente no pacote java.lang é uma classe encapsuladora (wrapper class) para o tipo primitivo char. Objetos desta classe contém apenas um campo, cujo tipo é char.

Veja a posição desta classe na hierarquia de classes da plataforma Java:

java.lang.Object
......


Esta classe implementa as interfaces Serializable e Comparable<Character>.

Uma das vantagens de se usar objetos da classe Character é que podemos chamar seus métodos estáticos para obter informações sobre o tipo char encapsulado. Veja:

public class Main {
  public static void main(String[] args) {
    // uma variável do tipo char
    char letra = 'A';
	
    // vamos verificar se o caractere anterior é uma letra maiúscula
    if(Character.isUpperCase(letra)){
......


Ao executarmos este código teremos o seguinte resultado:

A letra é maiúscula

Veja que neste trecho de código nós usamos o método estático isUpperCase() da classe Character para verificar se um determinado caractere está em letras maiúsculas.


Java ::: Desafios e Lista de Exercícios Resolvidos ::: Laços

Exercícios Resolvidos de Java - Como converter decimal em binário em Java usando o laço while

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

Escreva um programa Java que usa o laço while para converter um número decimal em sua representação binária. Peça ao usuário para informar um número inteiro e mostre o mesmo em binário (como uma String). Você deve obrigatoriamente usar o laço while.

Sua saída deverá ser parecida com:

Informe um número decimal: 38
A representação binária é 100110
Resposta/Solução:

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

package estudos;

import java.util.Scanner;

public class Estudos {
  public static void main(String[] args) {
    // vamos fazer a leitura usando a classe Scanner
    Scanner entrada = new Scanner(System.in);
      
    // vamos ler o número decimal
    System.out.print("Informe um número decimal: ");
    int decimal = Integer.parseInt(entrada.nextLine());
    int decimal_temp = decimal; // para mostrar o resultado no final
......



PHP ::: Dicas & Truques ::: Strings e Caracteres

Como usar as funções strpos() e stripos() do PHP para obter uma matriz contendo todas as posições das ocorrências de uma substring dentro de uma string

Quantidade de visualizações: 2873 vezes
Em algumas situações percebemos que uma substring aparece mais de uma vez em uma string e gostaríamos de obter mais informações sobre tais ocorrências. No trecho de código abaixo eu mostro como usar as funções strpos() e stripos() para obter uma matriz contendo todas as posições das ocorrências de uma substring dentro de uma string:

<?php
  $frase = "PHP? Gosto muito de PHP e Java. Mas prefiro PHP e Delphi";
  $palavra = "PHP";
  
  // primeiro vamos verificar se a palavra está contida na frase
  if(strpos($frase, $palavra) !== false){
     // agora vamos obter as posições de todas as ocorrências
     $posicoes = array();
     $offset = 0;
     $posicao = -1;
     
     while($offset < strlen($frase)){
	$posicao = strpos($frase, $palavra, $offset);
	if($posicao !== false){
......


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

A palavra foi encontrada nas posições: 0, 20, 44,

Note que a função strpos() diferencia maiúsculas de minúsculas. Se você quiser efetuar uma pesquisa de substrings desconsiderando maiúsculas e minúsculas, use a função stripos().


Java ::: Desafios e Lista de Exercícios Resolvidos ::: Programação Orientada a Objetos

Exercício Resolvido de Java - A classe Produto (construtores, métodos, getters e setters e encapsulamento)

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

Crie uma classe Produto para representar um produto do mundo real. Sua classe deverá conter os seguintes atributos e métodos:

1) Um campo de dados privado do tipo String chamado nome, que representará o nome do produto.

2) Um campo de dados privado do tipo double chamado precoCusto, que guardará o preço de custo do produto.

3) Um campo de dados privado do tipo double chamado precoVenda, que guardará o preço de venda do produto.

4) Um campo de dados privado do tipo double chamado margemLucro, que guardará a margem de lucro do produto.

5) Métodos públicos get() e set() para os atributos acima. Modifique o método setPrecoVenda() para que o preço de venda não seja inferior ao preço de compra. Caso isso aconteça, exiba uma mensagem alertando o usuário.

6) Crie um método chamado calcularMargemLucro() que calculará a margem de lucro do produto.

7) Crie um método chamado getMargemLucroPorcentagem() que retornará a margem de lucro como percentual.

Para finalizar, no método main() da classe de teste, crie um novo objeto da classe Produto, peça para o usuário informar os preços de custo e de venda e exiba a margem de lucro em moeda e em percentual. Sua saída deverá ser algo parecido com o mostrado na imagem abaixo:

Informe o preço de custo: 120
Informe o preço de venda: 195
Preço de custo: 120.0
Preço de Venda: 195.0
Margem de Lucro: 75.0
Margem de Lucro Percentual (%): 62.5
Resposta/Solução:

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

Produto.java:

package estudos;

public class Produto{
  private String nome; // nome do produto
  private double precoCusto; // preço de custo do produto
  private double precoVenda; // preço de venda do produto
  private double margemLucro; // margem de lucro do produto

  // obtém a margem de lucro
  public double getMargemLucro(){
    return margemLucro;
  }

  // define a margem de lucro
  public void setMargemLucro(double margemLucro){
    this.margemLucro = margemLucro;
  }

  // obtém o nome do produto
  public String getNome(){
    return nome;
  }

  // define o nome do produto
  public void setNome(String nome){
    this.nome = nome;
  }

  // obtém o preço de custo
  public double getPrecoCusto(){
    return precoCusto;
  }

  // define o preço de custo
  public void setPrecoCusto(double precoCusto){
......


Veja agora o método main() que nos permite testar a funcionalidade da classe Produto:

package estudos;

import java.util.Scanner;

public class Estudos {
  public static void main(String[] args) {
    Scanner entrada = new Scanner(System.in);
    
    // vamos criar um novo objeto da classe Produto
    Produto p = new Produto();
    
    // vamos ler o preço de custo
    System.out.print("Informe o preço de custo: ");
    p.setPrecoCusto(Double.parseDouble(entrada.nextLine()));
    
    // vamos ler o preço de venda
    System.out.print("Informe o preço de venda: ");
......



Mais Desafios de Programação e Exercícios e Algoritmos Resolvidos de Java

Veja mais Dicas e truques de Java

Dicas e truques de outras linguagens

Quem Somos

Osmar J. Silva
Programador Freelancer
WhatsApp +55 (062) 98553-6711

Goiânia-GO
Programador Freelancer - Full Stack Developer, Professional Java Developer, PHP, C/C++, Python Programmer, wxWidgets Professional C++ Programmer, Freelance Programmer. Formado em Ciência da Computação pela UNIP (Universidade Paulista Campus Goiânia) e cursando Engenharia Civil pela PUC-Goiás. Possuo conhecimentos avançados de Java, Python, JavaScript, C, C++, PHP, C#, VB.NET, Delphi, Android, Perl, e várias tecnologias que envolvem o desenvolvimento web, desktop, front-end e back-end. Atuo há mais de 20 anos como programador freelancer, atendendo clientes no Brasil, Portugal, Argentina e vários outros paises.
Entre em contato comigo para, juntos, vermos em que posso contribuir para resolver ou agilizar o desenvolvimento de seus códigos.
José de Angelis
Programador Freelancer
WhatsApp +55 (062) 98243-1195

Goiânia-GO
Programador Freelancer - Formado em Sistemas de Informação pela Faculdade Delta, Pós graduado em Engenharia de Software (PUC MINAS), Pós graduado Marketing Digital (IGTI) com ênfase em Growth Hacking. Mais de 15 anos de experiência em programação Web. Marketing Digital focado em desempenho, desenvolvimento de estratégia competitiva, analise de concorrência, SEO, webvitals, e Adwords, Métricas de retorno. Especialista Google Certificado desde 2011 Possui domínio nas linguagens PHP, C#, JavaScript, MySQL e frameworks Laravel, jQuery, flutter. Atualmente aluno de mestrado em Ciência da Computação (UFG)
Não basta ter um site. É necessário ter um site que é localizado e converte usuários em clientes. Se sua página não faz isso, Fale comigo e vamos fazer uma analise e conseguir resultados mais satisfatórios..

Linguagens Mais Populares

1º lugar: Java
2º lugar: Python
3º lugar: C#
4º lugar: PHP
5º lugar: Delphi
6º lugar: C
7º lugar: JavaScript
8º lugar: C++
9º lugar: VB.NET
10º lugar: Ruby



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