Pular para o conteúdo principal

Exercícios resolvidos em Linguagem Python - para iniciantes

Esta lista de exercícios resolvidos é um manual para ajudar todo aluno iniciante e não só, a adquirir e aprimorar as habilidades necessárias para se trabalhar com Python, de forma rápida e consistente. Estude e desfrute do conteúdo. 1º Exercício      Faça um programa que informe a versão do Python que você está utilizando Solução import sys print ( "Versão do Python" ) print (sys.version) print ( "Informação da versão instalada" ) print (sys.version_info) Atenção :     -  O módulo sys fornece funções e variáveis usadas para manipular diferentes partes do ambiente de tempo de execução do Python;     - Pra quem ainda não está familiarizado com a linguagem, um módulo  é um arquivo contendo definições e comandos em Python para serem usados em outros programas. 2º Exercício      Faça um programa em linguagem Python que converta metros para centímetros. Solução print ( ' \t ----Conversão de medida---- ' ) metros = int ( input ( 'Informe o valor em metros: 

EXEMPLOS - MySQL STORED PROCEDURE(SP) - PROCEDIMENTO ARMAZENADO NO MySQL

Um Procedimento Armazenado (Stored Procedure, em inglês) é um conjunto de instruções SQL(Structured Query Language) com um nome atribuído, que é armazenado em um sistema de gerenciamento de banco de dados relacional (SGBDR), para que possa ser reutilizado e compartilhado por vários programas. Outro aspecto interessante, é que quando o procedimento é executado pela primeira vez, todas as informações sobre ele são armazenadas no cache do sistema, o que o torna muito mais rápido para ser executado posteriormente, o que é uma vantagem, principalmente considerando que a maior parte do tempo de resposta de um sistema é devido aos acessos ao banco de dados. Lembre-se, pra gente chamar o stored Procedure usamos a instrução CALL.

ANOTE AÍ!
  • O cache é um tipo de arquivo temporário que reúne informações que são usadas com frequência para facilitar o acesso pelo sistema de forma mais acelerada.

    PARÂMETROS DO STORED PROCEDURE

    Normalmente, quando a gente desenvolve um stored procedure usamos parâmetros. No MySQL, um parâmetro adquire um dos seguintes termos: IN , OUT e INOUT.
  • IN - significa que o parâmetro passa um valor para um procedimento. O procedimento pode modificar o valor, mas a modificação não é visível para o chamador quando o procedimento retorna. Por padrão, cada parâmetro é um parâmetro IN. Para especificar o contrário, use a palavra-chave OUT ou INOUT antes do nome do parâmetro.
  • OUT - Significa que o stored procedure pode alterar o parâmetro e devolve-lo ao programa de chamada.
  • INOUT - é a combinação do modo IN e OUT. Em poucas palavras, um parâmetro INOUT é inicializado pelo chamador, pode ser modificado pelo procedimento e qualquer alteração feita pelo procedimento fica visível para o chamador quando o procedimento retorna.
Observação: Especificar um parâmetro como IN, OUT ou INOUT é válido apenas para  PROCEDURES. Para a FUNCTION, os parâmetros são sempre considerados como parâmetros IN.

1º EXEMPLO

Criar uma tabela com o nome faculdades e implementar o conceito de stored procedure para fazer a inserção de registros na tabela criada.

Solução

A seguir, temos um exemplo de uma tabela simples de nome faculdades que foi criada utilizando a IDE MySQL Workbench.

create table faculdades(
id_faculdade int primary key,
nome varchar(65) not null,
email varchar(60),
localizacao varchar(80) not null,
municipio varchar(45) not null,
estado varchar(45) not null
);
Agora sim, vamos preencher a tabela faculdades

insert into faculdades(id_faculdade,nome,email,localizacao,municipio,estado)
values(11,'FATEC BAURU','f196acad@cps.sp.gov.br','Rua Manoel Bento da Cruz, 3-30 - Centro','Bauru', 'São Paulo');

insert into faculdades(id_faculdade,nome,email,localizacao,municipio,estado)
values(26,'ESCOLA DE ENGENHARIA DE LINS','unilins@unilins.edu.br','Avenida Nicolau Zarvos, 1925 - Jardim Aeroporto','Lins', 'São Paulo');

Pra gente visualizar os dados inseridos, vamos fazer um select * from, para trazer todos os registros da tabela faculdades.

SELECT * FROM faculdades;
Após a execução do comando, teremos o resultado, conforme exibido na imagem a seguir:



Estes, são os comandos relacionados ao Stored Procedure:
  • CREATE PROCEDURE - Este comando é usado para criar a procedure
  • ALTER PROCEDURE - Este comando pode ser usado para renomear um stored procedure ou para alterar a sua estrutura.
  • DROP PROCEDURE- Este comando é usado para deletar um stored procedure
  • SHOW CREATE PROCEDURE - Este comando é uma extensão do MySQL. De forma similar a SHOW CREATE TABLE, ele retorna as informações exatas que podem ser usadas para recriar a rotina chamada.
Galera, a gente cria um stored procedure com o comando CREATE PROCEDURE [nome da procedure]

Agora, vamos criar uma procedure para trazer todos os registros da tabela faculdades.

Observação: o delimitador é o caractere ou string de caracteres que você usará para informar ao cliente mysql que você terminou de digitar uma instrução SQL. Em poucas palavras, o delimiter serve para indicar o final do conjunto de instruções. Por muito tempo, o delimitador sempre foi um ponto e vírgula. Isso causa um grande problema porque em um procedimento armazenado, pode-se ter muitas declarações, e cada uma deve terminar com um ponto e vírgula.

DELIMITER //
  CREATE PROCEDURE
faculdades_select()
  BEGIN
       SELECT * FROM
faculdades;
  END //
  DELIMITER ;
Onde:
  • faculdades_select() é o nome do stored procedure. O nome pode ser de sua preferência.
Pronto, procedure feita . Agora, é só executar esse código e o banco o compilará e o deixará armazenado, só esperando você o chamar.

Pra ficar mais interessante, vamos chamar o procedimento armazenado, utilizando o comando call.

CALL
faculdades_select();

Com o script abaixo, vamos criar um procedimento armazenado para inserir dados na nossa tabela faculdades.

DELIMITER //
 CREATE PROCEDURE
faculdades_insert(idx int,nomex varchar(65),emailx varchar(60),localizacaox varchar(80),municipiox varchar(45),estadox varchar(45))
 BEGIN
 
insert into faculdades(id_faculdade,nome,email,localizacao,municipio,estado)
values(idx,nomex,emailx,localizacaox,municipiox,estadox);
END //
DELIMITER ;
CALL
faculdades_insert(10,'HUICODE ACADEMY','huicodesocial@gmail.com','Rua dos Bandeirantes 3-33','Bauru','São Paulo');

Pra demonstrar que deu tudo certo, ou seja, que uma nova faculdade foi inserida no sistema, vamos fazer um select * from, para trazer todos os registros da tabela faculdades.

SELECT * FROM faculdades;


2º EXEMPLO

Utilizando a tabela do exercício anterior, crie um procedimento armazenado que trás o nome da faculdade quando o usuário digita o código identificador da faculdade.

Solução

DELIMITER //
CREATE   PROCEDURE
pesquisar_faculdade( IN Idsearch INT )    
    BEGIN
SELECT
nome, email, localizacao,municipio,estado
FROM
faculdades
WHERE
id_faculdade=Idsearch;     
    END//
DELIMITER ;

Pra gente chamar o procedimento armazenado com argumento, fazemos o seguinte:
CALL pesquisar_faculdade(10);

3º EXEMPLO

Utilizando a tabela do exercício anterior, crie um stored procedure com a finalidade de recuperar os campos: nome e email da tabela faculdades.

Solução

DELIMITER //
  CREATE PROCEDURE  pesquisar_faculdade(in parametro1 INT)
  BEGIN
declare
id_facul int(11);
     declare
nome_facul varchar(65);
     declare
email_facul varchar(60);
  SELECT
nome,email into nome_facul,email_facul from faculdades where parametro1=id_faculdade;
    
select nome_facul,email_facul;
END //
DELIMITER ;
CALL  pesquisar_faculdade(11);


Se a gente inserir um id_faculdade que não consta no banco de dados, o retorno será conforme a figura abaixo.
CALL  pesquisar_faculdade(1);


4º EXEMPLO

Utilizando a tabela do exercício anterior, crie um stored procedure para testar os parâmetros(validar os campos) id_faculdade e nome, da tabela faculdades. O procedimento armazenado deve emitir uma mensagem para o usuário, caso ele insira um id_faculdade ou nome da faculdade já existente.

Solução

DELIMITER //
  CREATE PROCEDURE
faculdades_verificar(in pid INT, in pnome varchar(65))
  BEGIN
    declare id_facul int(11);
    declare nome_facul varchar(65);
    declare email_facul varchar(45);
    declare localizacao_facul varchar(120);
    declare municipio_facul varchar(45);
    declare estado_facul varchar(45);
    declare qtde int;

if pid>=1 and pid<=99 then
      
if length(pnome)>=1 and length(pnome)<=65 then
     select count(*) into qtde from faculdades where id_faculdade=pid;
if qtde=0 then
   select count(*) into qtde from faculdades where upper(nome)=upper(pnome);
            
if qtde=0 then
   
insert into faculdades(id_faculdade,nome,email,localizacao,municipio,estado)
                 values(id_facul, nome_facul, email_facul, localizacao_facul, municipio_facul, estado_facul);
     
else
select'O valor do campo nome já existe.' ;
 
end if;  
            else
                select 'O valor do campo id já existe';
         
end if;
     
  else
           
select 'O valor do campo nome está fora da faixa de valores aceitáveis';
  
end if;
   
else
     
select 'O valor do campo id está fora da faixa de valores aceitáveis';
end if;

END //
DELIMITER;

CALL
faculdades_verificar(10,'fatec Jundiaí');


CALL faculdades_verificar(1,'fatec bauru');


Explicações
  • O DELIMITER serve para indicar o final do conjunto de instruções. Por muito tempo, o delimitador sempre foi um ponto e vírgula. Isso causa um problema porque, em um procedimento armazenado, pode-se ter muitas declarações, e cada uma deve terminar com um ponto e vírgula.
  • Para evitar problemas com o valor do campo id é necessário utilizar o AUTO_INCREMENT que serve para que um valor de um campo seja automaticamente inserido toda a vez que se cria um novo registro, como um ID nas chaves primárias.
Se você quiser excluir um procedimento do banco de dados, faça o seguinte: DROP PROCEDURE nome_da_procedure;

Por exemplo, se eu quisesse excluir o procedimento faculdades_verificar, faria o seguinte: DROP PROCEDURE faculdades_verificar; -- Neste caso, a gente está excluindo o procedimento faculdades_verificar do banco de dados.

Lembra do SHOW CREATE PROCEDURE? Esta sentença retorna as informações detalhadas de um procedimento armazenado no MySQL que pode ser usada até para recriar a rotina de um stored procedure.

Exemplo: SHOW CREATE PROCEDURE

Após a execução do comando SHOW CREATE PROCEDURE faculdades_insert; teremos o resultado, conforme exibido na imagem a seguir:



Clicando em CREATE DEFINER, podemos observar as informações relacionadas a procedure faculdades_insert que a gente criou, conforme exibido na imagem a seguir:

FOI ÚTIL? Faça um comentário

Comentários

  1. Maravilha, obrigada!!!

    ResponderExcluir
  2. Muito bom, ajudou bastante

    ResponderExcluir
  3. "Há um erro de lógica neste quarto exemplo. Não faz sentido tentar inserir um novo registro (uma nova faculdade) na tabela quando você não passou as variáveis como parâmetros da procedure. Neste exemplo, você está apenas declarando variáveis locais (dentro da procedure) que serão executadas sem valor algum. Quando você tenta executar a procedure passando os argumentos para 'pid' e 'pnome' que não existem na tabela, o MySQL retorna imediatamente um erro, e por quê?

    Então, quando a tabela 'faculdades' foi criada, as colunas foram definidas como not null, ou seja, não é permitida a inserção de valores nulos nelas. Outro erro grave (também na parte de inserção de registros na tabela) foi usar uma variável local 'id_facul' como valor para 'id_faculdade'. Isso não faz sentido, pois 'id_faculdade' é uma coluna do tipo inteiro e de chave primária. Seria necessário passar um valor inteiro para essa coluna, já que ela não foi criada com auto_increment. Mesmo que fosse, ainda retornaria um erro, pois as demais colunas não permitem valores nulos/vazios.

    Da mesma forma, se todas as colunas permitissem valores nulos, também não faria sentido algum essa tentativa, já que seria completamente inútil ter uma linha com apenas o ID da faculdade e o restante nulo. Se a ideia fosse apenas verificar a existência de uma faculdade na tabela e, no máximo, escrever um SELECT para exibir o resultado, seria até válido. No entanto, cometeu-se um erro ao escrever esse INSERT e ao declarar essas variáveis."

    ResponderExcluir
    Respostas
    1. Seria interessante que essas informações fossem revisadas para não confundir os demais leitores.

      Excluir

Postar um comentário

Postagens mais visitadas deste blog

Exercícios resolvidos em Linguagem Python - para iniciantes

Esta lista de exercícios resolvidos é um manual para ajudar todo aluno iniciante e não só, a adquirir e aprimorar as habilidades necessárias para se trabalhar com Python, de forma rápida e consistente. Estude e desfrute do conteúdo. 1º Exercício      Faça um programa que informe a versão do Python que você está utilizando Solução import sys print ( "Versão do Python" ) print (sys.version) print ( "Informação da versão instalada" ) print (sys.version_info) Atenção :     -  O módulo sys fornece funções e variáveis usadas para manipular diferentes partes do ambiente de tempo de execução do Python;     - Pra quem ainda não está familiarizado com a linguagem, um módulo  é um arquivo contendo definições e comandos em Python para serem usados em outros programas. 2º Exercício      Faça um programa em linguagem Python que converta metros para centímetros. Solução print ( ' \t ----Conversão de medida---- ' ) metros = int ( input ( 'Informe o valor em metros: 

Como abrir uma página da web utilizando Python?

Simples, você pode abrir páginas da Web de forma rápida, segura e fácil. Veja só, durante os estudos das bibliotecas padrão do Python descobri que para abrir um navegador web a partir de um script, devo importar o módulo webbrowser. Em seguida, usar webbrowser.open () que vai receber o link que quero abrir como argumento e executar o serviço, ou seja, basta inserir um endereço do youtube nele, na verdade pode ser qualquer link que você desejar. Exemplo webbrowser.open( "https://www.huicode.com.br/p/exercicios-resolvidos-de-linguagem-c.html" ) Para funcionar temos que importar o módulo webbrowser, que vai ser a maneira de dizer ao python que queremos usar webbrowser e todas as suas funcionalidades no programa. import webbrowser webbrowser.open( "https://www.huicode.com.br/p/exercicios-resolvidos-de-linguagem-c.html" ) Funcionooou, uhuhu. Nem parece, mas o módulo webbrowser é um módulo muito empregado em projetos de sites de filmes. Tem muitas utilidades, acredite.

CÁLCULO DA ÁREA DE UM TRIÂNGULO - LINGUAGEM C

Escreva um programa para calcular a área de um triângulo, sendo dados a sua base e a  sua altura. A = (B*H)/2 Solução #include <stdio.h> int main() {   // Variáveis  float area,base,altura;  // Entrada de Dados  printf( "\n Informe a base do triângulo: " );  scanf( "%f" ,&base);  printf( "\n Informe a altura do triângulo: " );  scanf( "%f" ,&altura);   // Processamento dos dados  area=(base*altura)/2;  // Exibição do resultado  printf( "\n Area do triângulo=%.1f\n" ,area);   return 0; }