Comandos SQL – Exercícios 1

Olá pessoal, como prometido,  colocarei aqui alguns exercícios e suas resoluções. Estes exercícios eu fiz em aula com o Prof. Carrilho da Fatec Americana.

Crie uma base de dados Universidade com as tabelas a seguir:

 Alunos (RA, nome, endereço, cidade)
 Disciplinas (COD_DISC, nome_disc, carga_hor)
 Professores (COD_PROF, nome, endereço, cidade)
 Turma (COD_DISC, COD_TURMA, COD_PROF, ANO,  horário)
 Histórico (RA, COD_DISC, COD_TURMA, COD_PROF,  ANO, freqüência, nota)

Após criar esta tabelas, e incluir alguns dados neslas, poderemos “brincar” e testar todos os comando que aprendemos nos artigos anteirores 1. Encontre o RA dos alunos com nota em BD em 2010 menor que 5 (obs: BD = código da disciplinas).

SELECT ra
FROM HISTORICO
WHERE cod_disc='BD' AND ano=2010 AND nota <5

2. Forneça o RA, nome e nota dos alunos com nota menor que 5 em BD em 2010.

SELECT a.RA, a.NOME, a.NOME
from HISTORICO h, ALUNOS a
where cod_disc='BD' and ano=2010 and nota <5 and a.RA=h.RA

3. Forneça o nome dos professores de BD em 2010.

SELECT distinct(p.NOME)
from PROFESSORES p, TURMA t
where p.COD_PROF=t.COD_PROF and t.ANO=2010 and t.COD_DISC='BD'

4. Encontre o nome, endereço, cidade dos alunos e código das disciplinas onde os alunos tiveram nota menor que 5 em 2010.

SELECT a.nome, a.ENDERECO, a.CIDADE, h.COD_DISC 
from ALUNOS a, HISTORICO h 
where a.RA = h.RA and h.NOTA<5 and h.ano=2010

5. Obtenha o nome e RA dos alunos do professor em 2010.

SELECT distinct a.NOME, a.RA
from ALUNOS a, PROFESSORES p, HISTORICO h 
where h.RA=a.RA and h.COD_PROF = p.COD_PROF
and p.NOME like '%NOME%'
and h.ANO = 2010

6. Localize o nome e RA dos alunos do professor JOSÉ em 2010 ou 2009 que tiveram aulas com o professor MARCOS em algum ano.

SELECT distinct a.NOME, a.RA
from ALUNOS a, PROFESSORES p, HISTORICO h 
where h.RA=a.RA and h.COD_PROF = p.COD_PROF
and p.NOME like '%JOSÉ%'
and (h.ANO = 2010 or h.ANO = 2009)
AND A.RA in
(select H.RA
from HISTORICO h, PROFESSORES p
where h.COD_PROF = p.COD_PROF
and p.nome like '%MARCOS%')

7. Forneça o histórico escolar do aluno de nome Alex, ou seja, seu RA, nome, a lista de disciplinas que ele já cursou contendo o código e nome da disciplina, freqüência e nota e ano que o aluno a cursou.

select a.RA, a.NOME,
h.COD_DISC, d.NOME_DISC,
h.ANO, h.FREQUENCIA, h.NOTA
from HISTORICO h, ALUNOS a, DISCIPLINAS d
where a.RA = h.RA
and h.COD_DISC = d.COD_DISC
and a.NOME like '%ALEX%'

8. Encontre o nome e endereço dos alunos e professores de Campinas.

select a.NOME ,a.ENDERECO, 'aluno'  as tipo
from ALUNOS a
where a.CIDADE='CAMPINAS'
union
select p.NOME ,p.ENDERECO, 'prof'
from PROFESSORES p
where p.CIDADE='CAMPINAS'

9. Forneça o nome dos alunos que cursaram disciplinas com carga horária menor que 60 horas, bem como os respectivos professores que as lecionaram.

select a.NOME, p.NOME
from ALUNOS a, DISCIPLINAS d, PROFESSORES p, HISTORICO h
where
a.RA = h.RA and
d.COD_DISC = h.COD_DISC and
p.COD_PROF = h.COD_PROF and
d.CARGA_HOR<60

10. Localize o nome dos professores que lecionaram matérias nas quais o aluno “Pedro Paulo Cunha” foi reprovado. (nota < 5)

select p.NOME
from ALUNOS a, PROFESSORES p, HISTORICO h
where
a.RA = h.ra and
p.COD_PROF = h.COD_PROF and
upper(a.NOME) = 'PEDRO PAULO CUNHA' AND
h.NOTA<5

11. Encontre o RA dos alunos que já cursaram todas as disciplinas lecionadas pelo prof.João.

Select distinct a.NOME, a.Ra
from ALUNOS a
where not exists (select Cod_disc
                  from PROFESSORES p, TURMA t
                  where p.COD_PROF = t.COD_PROF and
                  P.NOME like '%JOÃO%'
                  and Cod_disc not in (select cod_disc
                                       from HISTORICO h
                                       where a.RA = h.RA))

12. Encontre o Ra, nome e média das notas dos alunos que cursaram todas as matérias lecionadas por professores de Campinas.

Select distinct A.RA, A.NOME, AVG(nota)
from ALUNOS A , HISTORICO h where A.RA= h.RA  and
 not exists
(select Cod_disc
from PROFESSORES p, TURMA t
where p.CIDADE = 'CAMPINAS'and Cod_disc not in
     (select cod_disc
      from HISTORICO h
      where A.RA = h.RA))
group by A.RA, A.NOME

13. Localize o RA e nome dos alunos com nota menor que qualquer uma das notas do aluno de RA 20090121.

select a.RA,a.NOME
from ALUNOS a, HISTORICO h
where a.RA = h.RA and
h.NOTA <any
(select nota from HISTORICO where RA = 20090121)

14. Forneça o Ra, nome e média das notas por alunos.

select a.RA, a.NOME, avg(h.NOTA)
from ALUNOS a, HISTORICO h
where a.RA=h.RA
group by a.RA, a.NOME

15. Encontre o nome dos alunos que não cursaram nenhuma disciplina oferecida em 2010.

select nome
from ALUNOS
where ra not in (select distinct ra from HISTORICO where ano=2010 )

16.  Forneça o nome dos professores que somente lecionaram matérias com carga horária foi inferior a 60 horas.

Select p.NOME
from PROFESSORES p,TURMA t
where p.COD_PROF = t.COD_PROF and 
p.COD_PROF not in ( select t.COD_PROF
                    from TURMA t, DISCIPLINAS d
                    where t.COD_DISC = d.COD_DISC and CARGA_HOR >=60)

17. Encontre o nome dos alunos que não foram reprovados em nenhuma matéria.

select a.NOME
from  ALUNOS a
where a.RA not in (select a.RA
                   from HISTORICO h, DISCIPLINAS d
                   where h.COD_DISC = d.COD_DISC and h.NOTA <6.0)

18. Forneça o RA e nota dos alunos com nota em BD em 2010 menor que a média das notas na disciplina.

select a.NOME, h.NOTA
from  ALUNOS a , HISTORICO h
where a.RA = h.RA and  h.COD_DISC='BD' and ano=2010
            and nota <all (select avg(NOTA)
                           from HISTORICO 
                           where COD_DISC='BD'and ano=2010)

19. Encontre o código e nome das disciplinas e media das notas por disciplina, mostre apenas as disciplinas com média de notas maior que 5.0.

select d.COD_DISC, d.NOME_DISC, avg(nota) 
from  DISCIPLINAS d, HISTORICO h 
where  h.COD_DISC = d.COD_DISC
 group by d.COD_DISC, d.Nome_DISC having avg(nota) >5

20. Forneça o número de alunos que fizeram BD em 2010.

SELECT count(*) from histórico where cód_disc =’bd’ and ano =2010

21. Encontre a disciplina com maior média de notas.

Select nome_disc, avg(nota)
from Disciplinas D, Historico H
Where D.cod_disc = h.cod_disc
group by nome_disc
having avg(nota) >= all( Select avg(nota)
                         from historico
                         group by cod_disc)

22. Forneça o código das disciplinas com média menor que a média das notas em BD.

Select cod_disc, AVG(nota)
from historico
group by cod_disc
having avg(nota) < all (select avg(nota)
                        from historico
                        where cod_disc = 'BD')

23. Forneça o nome dos professores que já lecionaram alguma disciplina para o aluno de RA 5400001.

Select P.nome
from Professores P, historico h
where P.cod_prof = H.cod_prof and H.RA = 5400001

24. Encontre o nome das disciplinas com média de freqüência abaixo de 80%.

Select nome_disc
From Disciplinas D,Historico H
Where H.cod_disc = D.cod_disc
group by nome_disc, carga_hor
having avg(frequencia) < 0.8 * carga_horaria

25. Forneça o nome dos alunos que tiveram no mínimo 2 reprovações em 2010.

Select A.Nome
From Alunos A, Historico H
Where A.RA = H.RA and ano = 2010 and nota < 6.0
group by A.Nome
having count(*) >= 2

26. Quantas vezes o aluno “José da Silva” cursou a disciplina de Banco de Dados.

select count(*)
from ALUNOS a, HISTORICO h, DISCIPLINAS d
where a.ra=h.ra
and d.COD_DISC=h.COD_DISC
and a.NOME ='Jose da Silva'
and d.NOME_DISC='Banco de Dados'

27. Quantos alunos já cursaram a disciplina de Banco de Dados em 2009 e 2010.

select count(*)
from HISTORICO h inner join DISCIPLINAS d on D.COD_DISC= h.COD_DISC
where d.NOME_DISC='Banco de Dados' and (ano=2009 or ano=2010)

28 Forneça o nome dos alunos que obtiveram mais que 2 reprovações em algum ano.

select a.NOME, h.ano, count(*)
from ALUNOS a, HISTORICO h
where h.RA = h.RA and h.NOTA<6.0
group by a.NOME, h.ANO
having count(*) >2

29. Encontre o nome dos professores e das disciplinas onde o número de reprovações foi superior a 20 alunos em 2010.

select p.NOME, d.NOME_DISC
from PROFESSORES p, DISCIPLINAS d, HISTORICO h
where h.COD_PROF = p.COD_PROF and d.COD_DISC= h.COD_DISC
and h.NOTA<6 and h.ANO='2010'
group by p.NOME, d.NOME_DISC
having count(*) >20

30. Forneça o nome dos professores e código das disciplinas lecionadas por ele em 2010 e a media das notas por disciplina.

select p.NOME, h.COD_DISC, avg(h.NOTA)
from PROFESSORES p, HISTORICO h
where h.COD_PROF=p.COD_PROF and h.ANO = 2010
group by p.NOME, h.COD_DISC

Operações Diversas

Agora, iremos fazer algumas atualizações nas tabelas que criamos acima.

1. Insira seus dados no BD: tabela de alunos (seu nome, Ra, endereço, cidade), tabela de histórico cursando BD em 2009 na turma A com o professor JAC e obtendo nota 8.2 e freqüência 80, e a disciplina de EDA em 2010 na turma A com o professor RCSV e obtendo nota 7.5 e freqüência 75.

INSERT into ALUNOS
values (0912252, 'Aline Bossi', 'Rua manoel', 'Piracicaba')

INSERT into HISTORICO
values (0912252,'BD','A','JAC','2009','80','8.2')

INSERT into HISTORICO
values (0912252,'EDA','A','RCSV',2010,75,7.5)

2. Insira todos os alunos da disciplina de BD (Banco de Dados) em 2009 e tiveram nota > 5, cursando a disciplina BDII (Banco de Dados II) em 2010 com o mesmo código de turma e o mesmo professor, mas com freqüência e nota desconhecidas.
insert into HISTORICO

select h.RA, 'BDII',
h.COD_TURMA, h.COD_PROF,
2010, null, null   
from HISTORICO h
where h.COD_DISC = 'BD'
and h.ANO = 2009 and h.NOTA >5

3. Altere as notas dos alunos de Banco de Dados (BD) em 2010 com o professor JAC através da seguinte regra:
     – notas entre [4.0 e 5.0[ ficaram com 4.0 (inclusive a esquerda e exclusive a direita).
     – notas entre [5.0 e 9.5[ terão acréscimo de 0.5 na nota.
    – notas acima de 9.5, inclusive, ficarão com 10.0

update HISTORICO
set nota  = 4
where nota>=4 and nota<5
and cod_disc = 'BD'
and ano = '2010'
and cod_prof='JAC';

update  HISTORICO
set  nota  = 10
where nota>=9.5 and cod_disc = 'BD'
and ano = '2010' and cod_prof='JAC';

update  HISTORICO
set nota = nota +0.5
where nota>=5.0 and nota<9.5 and cod_disc = 'BD'
and ano = '2010' and cod_prof='JAC';

4. Remova todas as informações referentes ao aluno “Jorge dos Santos” do sistema.

delete from  HISTORICO
where RA IN
(select RA from Alunos where nome='Jorge dos Santos');

delete from ALUNOS 
where nome = 'Jorge dos Santos';

5. Faça uma atualização na freqüência dos alunos de BD em 2010 com o professor JC de acordo com a seguinte regra:
    – freqüência abaixo de 45, inclusive, acréscimo de 3.0%
    – freqüência acima de 45, acréscimo de 5.0%

update Historico h
set  h.FREQUENCIA = h.FREQUENCIA + 0.05* h.FREQUENCIA
where h.FREQUENCIA >45
and h.COD_DISC='Bd'
and h.ANO = '2010’ and h.Cod_prof = ‘JAC’;
update Historico h
set  h.FREQUENCIA = h.FREQUENCIA * 1.03
where h.FREQUENCIA <=45
and h.COD_DISC='Bd'
and h.ANO = '2010’
and h.Cod_prof = ‘JAC’;

6. Insira os seguintes dados: Aluna de RA 20090301 obteve nota 8.0 e freqüência 60 em BD (EM 2009 COM O PROFESSOR JAC NA TURMA A).

INSERT into HISTORICO
values(20090301, 'BD','A', 'JC', 2009, 60, 8 )

7. Execute todas as operações necessárias para substituir o nome do Prof. João Pedro por José Pedro, visto ter ocorrido um erro no momento de cadastrar o nome do professor.

update PROFESSORES
set nome='Jose Pedro'
where nome='Joao Pedro'

8. Substitua todas as matérias lecionadas pelo Prof. Raimundo Claudio Vasconcelos em 2010 pelo Prof. JAC.

update TURMA
set cod_prof = 'JAC'
where ano = 2010 and cod_prof in ( select cod_prof
                                   from PROFESSORES
                                   where nome = 'João")

Bom, estes são alguns exercícios para praticar,

Bons estudos e até logo!

Comandos SQL – PARTE 1

Olá queridos leitores, neste artigo mudarei um pouco os rumos do blog e falarei um pouco sobre SQL.  Farei um grande resumo conceitual sobre alguns comandos e  nos próximos artigos postarei alguns exemplos e exercícios para praticar o que estudamos.

Primeiramente, a  Linguagem de consulta é  por onde o usuário irá obter informações do banco de dados. Estas linguagens podem ser classificadas em procedurais e não-procedurais. Na primeira o usuário diz como o sistema irá realizar uma seqüência de operações no BD para obter o resultado desejado, já na segunda o usuário descreve a informação desejada, sem fornecer um procedimento para obtenção dessa informação.

Embora  SQL seja uma linguagem de consulta ela incorpora operações de manipulação de dados (DML) e operações de definição de dados (SQL-DDL).

Structured Query Language, ou Linguagem de Consulta Estruturada ou SQL

Falando uma pouco mais sobre SQL, esta é uma linguagem de consulta padrão para sistemas de BD relacionais, suas características são essencialmente do modelo relacional  (tabelas  e colunas com nomes distintos, as linhas contém informações de um registro da tabela, a ordem das linhas e colunas são irrelevantes, nunca teremos duas linhas iguais, além da chave primária entre outras ).

A linguagem SQL  se diferencia de outras linguagens de consulta a banco de dados no sentido em que uma consulta SQL especifica a forma do resultado e não o caminho para chegar a ele. Ela é uma linguagem declarativa em oposição a outras linguagens procedurais. Isto reduz o ciclo de aprendizado daqueles que se iniciam na linguagem.

Neste artigo darei enfoque para os elementos da  DML – (Data Manipulation Language – Linguagem de Manipulação de Dados). A DML é um subconjunto da linguagem usada para inserir, atualizar e apagar dados.

INSERT é usada para inserir um registro (formalmente uma tupla) a uma tabela existente.

UPDATE para mudar os valores de dados em uma ou mais linhas da tabela existente.

DELETE permite remover linhas existentes de uma tabela.

INSERINDO DADOS EM SUA TABELA

Uma das maneiras de inserir tuplas em tabelas usando SQL é especificando valor a valor à tupla a ser inserida.

INSERT INTO  r

VALUES  (V1, V2, V3, . . . . . Vn)

Os valores V1, V2, V3, . . . . . Vn devem pertencer ao domínio dos atributos correspondentes em “r”.

Outra forma de adicionar uma tupla na tabela é  especificando o as colunas da tabela e posteriormente  informando os valores que serão incluídos . A diferença entre os dois métodos é que o segundo você pode incluir valores nulos ou vazios. Desta forma:

INSERT INTO  r (coluna1, coluna2, coluna3,….. colunaN)

VALUES  (V1, V2, V3, . . . . . Vn)

Campos para o quais não temos valores a inserir devem ser preenchidos com “null”, neste caso, a inserção não será permitida se o campo tiver sido definido como obrigatório, isto é, “not-null”.

MODIFICANDO DADOS DE SUA TABELA

O comando SQL que nos permite atualizar dados é o comando UPDATE. A sintaxe básica do comando UPDATE é a seguinte:

UPDATE nome_tabela

SET nome_coluna1=expr1 [, nome_coluna2=expr2 ...]

WHERE [definição_where]

UPDATE é aplicado a uma tabela e a cláusula SET atribui a um campo o valor de uma expressão que pode ou não conter o valor de um campo da própria tabela. A cláusula WHERE restringe as atualizações apenas aos registro que satisfação suas condições.

EXCLUINDO DADOS DE SUA TABELA

O comando DELETE exclui as linhas que satisfazem a cláusula WHERE na tabela especificada.

Se a condição (cláusula WHERE) estiver ausente, o efeito é a exclusão de todas as linhas da tabela. O resultado vai ser uma tabela válida, porém vazia.

A sintaxe deste comando é a seguinte:

DELETE tabela  WHERE condição

Ou

DELETE FROM tabela WHERE condição

Todas as tuplas da relação (tabela)  que satisfazem a condição são excluídas integralmente dessa tabela.

Cada comando delete opera em uma única tabela => é necessário usar um comando para cada tabela.

A cláusula where pode ser omitida => todas as tuplas da relação serão excluídas (a tabela ficará vazia).

Bom pessoal esta foi a presentação de alguns comandos básicos e muito úteis, em breve postarei sua utilização.

Obrigada a todos  e seus comentários são sempre bem vindos.

 

Até logo!

Programação Orientada a Objetos

Olá pessoal, hoje neste artigo vou passar algumas definições básicas, mas necessárias sobre programação Orientada a Objetos, onde quem ainda não conhece vai ter a oportunidade de aprender e quem já conhece vai poder relembrar estes conceitos.

Primeiramente é muito interessante saber que uma das vantagens em programar Orientado a Objetos é que você é capaz de criar módulos que não precisam ser modificados, você pode simplesmente criar um novo objeto que irá herdar as características de outros já existentes. Algumas destas vantagens são:

Simplicidade: os objetos escondem a complexidade do código. Pode-se criar uma complexa aplicação gráfica usando botões, janelas, barras de rolamento, etc., sem conhecer complexidade do código utilizado para criá-los.

Reutilização de código: Um objeto, depois de criado, pode ser reutilizado por outras aplicações, ter suas funções estendidas e serem usados como blocos fundamentais em sistemas mais complexos.

Inclusão Dinâmica: objetos podem ser incluídos dinamicamente no programa, durante a execução. Isso permite que vários programas compartilhem os mesmos objetos e classes, reduzindo o seu tamanho final.

O QUE É UM OBJETO?

Objetos são instâncias das Classes, estas que são como moldes que definem quais atributos e funcionalidades dos objetos de seu tipo terão. Um objeto é capaz de armazenar estados através de seus atributos e reagir a mensagens enviadas a ele, assim como se relacionar e enviar mensagens a outros objetos.

Pensar em termos de objetos é muito parecido a como faríamos na vida real. Por exemplo, vamos pensar em um carro, diríamos que o carro é o elemento principal que tem uma série de características, como a cor, o modelo ou a marca. Ademais tem uma série de funcionalidades associadas, como podem ser andar, parar ou estacionar.

Basicamente o  carro seria o objeto, as propriedades seriam as características como a cor ou o modelo e os métodos seriam as funcionalidades associadas como andar ou parar.

Os objetos são instancias de uma classe qualquer. Quando criamos uma instancia temos que especificar a classe a partir da qual ela será criada. Esta ação de criar um objeto a partir de uma classe se chama instanciar.

Para criar um objeto temos que escrever uma instrução especial, chamada de construtora (constructor) que pode ser distinta dependendo da linguagem de programação que se empregue, mas será algo parecido a isto.

meuCarro = new Carro();

Com a palavra new especificamos que temos que criar uma instancia da classe que continua a seguir. Dentro dos parênteses poderíamos colocar parâmetros com os quais se inicia o objeto da classe carro.

Quando temos um objeto suas propriedades tomam valores. Por exemplo, quando temos um carro a propriedade cor tomará um valor em concreto, como vermelho ou  cinza. O valor concreto de uma propriedade de um objeto se chama estado.

Para acessar a um estado de um objeto e ver seu valor ou mudá-lo utilizamos o operador ponto.

meuCarro.cor = vermelho

O objeto é meuCarro, logo colocamos o operador ponto e por último o nome da propriedade a qual desejamos acessar. Neste exemplo, estamos mudando o valor do estado da propriedade Cor do Objeto meuCarro para vermelho com uma simples atribuição.

Uma mensagem em um objeto é a ação de efetuar uma chamada a um método. Por exemplo, quando dizemos a um objeto carro para andar, estamos lhe passando a mensagem “ande”.

Para mandar mensagens aos objetos utilizamos o operador ponto, seguido do método que desejamos utilizar.

meuCarro.andar()

Neste exemplo, passamos a mensagem andar(). Deve-se colocar parênteses assim como com qualquer chamada a uma função, dentro podemos passar parâmetros.

O QUE É UMA CLASSE?

As classes são declarações de objetos, também podemos definir como abstrações de objetos. Isto quer dizer que a definição de um objeto é a classe. Quando programamos um objeto e definimos suas características e funcionalidades na verdade o que estamos fazendo é programar uma classe. No exemplo anterior, falávamos da classe carro  porque somente estivemos definindo suas formas.

O QUE É UMA PROPRIEDADE?

As propriedades ou atributos são as características dos objetos. Quando definimos uma propriedade normalmente especificamos seu nome e seu tipo. Podemos ter a idéia de que as propriedades são algo assim como as variáveis onde armazenamos os dados relacionados com os objetos.

O QUE É UM MÉTODO?

São as funcionalidades associadas aos objetos. Quando estamos programando as classes as chamamos de métodos. Os métodos são como funções que estão associadas a um objeto.

Neste artigo apenas fiz referência às coisas mais básicas. Também existem mecanismos como a herança e o polimorfismo.

A herança serve para criar objetos que incorporem propriedades e métodos de outros objetos. Assim, poderemos construir uns objetos a partir de outros sem ter que reescrevê-lo todo.

O polimorfismo serve para que não tenhamos que nos preocupar sobre o que estamos trabalhando, e abstrairmos para definir um código que seja compatível com objetos de vários tipos.

São conceitos que irei falar em outra oportunidade.

Até mais

Microsoft .NET Framework

Olá pessoal, neste artigo falarei sobre as principais informações sobre Framework. Quando desenvolvemos um software em Delphi ou em Visual Basic 6, estamos criando este software diretamente para Sistemas Operacionais Windows sobre a plataforma Intel. Já quando desenvolvemos para o .NET, o sistema não dependerá do dispositivo ou plataforma, pois só necessitará ter instalado o .NET Framework que fica responsável em fornecer um ambiente da execução de código que minimiza conflitos de implantação, além de um ambiente de execução que reduz a zero os problemas de desempenho dos ambientes interpretados ou com scipts. O Framework permite também fornecer um ambiente de programação orientada a objetos consistente tanto se o código objeto for armazenado e executado localmente quanto se este for distribuído pela Internet ou executado remotamente. É válido lembrar que o framework permite que o desenvolvedor crie diversos tipos de aplicativos sejam eles baseados em Windows ou na WEB.

Existem dezenas de linguagens para criarmos nosso sistema .NET, podendo ser o VB.NET ( versão orientada á objetos do clássico Visual Basic) e o C# que herdou a sintaxe do C++. Estas citadas foram desenvolvidas pela Microsoft, mas há também outras desenvolvidas por outras empresas (Ex: COBOL, Delphi) . Mas a escolha da linguagem é apenas uma questão de sintaxe. Não importa qual a linguagem que você codificou, o resultado, em termos de performance e qualidade será o mesmo. Tudo isso porque um programa desenvolvido em .NET é compilado em uma linguagem intermediária chamada MSIL ( Microsoft Intermediate Language).

O MSIL, é muitas vezes é chamado de “mágica da Microsoft”, pois faz com que os programas sejam multiplataformas, seguro, versionados, etc. Mas o MSIL, nada mais é que uma linguagem intermediaria gerada no processo de compilação do código fonte, assim ao final desse processo temos um código intermediário e dependente do runtime do Framework ao invés dos executáveis “independentes”, até então gerado pelos compiladores.

Na primeira compilação do programa, entra em cena o JIT ( Just in Time Compiler) que é responsável por fazer uma nova compilação do programa, mas de acordo com as especificações do sistema operacional e do dispositivo que o .NET Framework se encontra.

Desenvolver um sistema para a plataforma .NET, traz mas algumas vantagens além das que já foram citadas acima, mas a mais importante é que o aplicativo criado irá rodar em um ambiente protegido e específico, sem ter que preocupar-se com especificações ou problemas do Sistema Operacional, pois toda a interação com este (como por exemplo o gerenciamento de memória) é feita pelo .NET através do CLR (Common language Runtime), que orienta o código no tempo de execução, principalmente o gerenciamento de código. Além do CLR há um componente muito importante do .NET Framework, a biblioteca de classes, que é uma coleção orientada a objeto extensa de tipos que podem ser utilizados no desenvolvimento dos aplicativos.

Fontes:

http://msdn.microsoft.com

ASP.NET 3.5 em VB e C# por Fernando Amaral

Validações

Olá pessoal, meu objetivo deste post é falar um pouco sobre alguns Validators do VS. Primeiramente os Validators são componentes do Visual Studio que facilitam a validação das informações que um usuário digita em uma página WEB. Por exemplo, quando em um formulário você deseja definir alguns campos como obrigatório, validar e-mail, tratamento de datas válidas, etc.

Vou explicar mais detalhadamente como e quando utilizar os controles RequiredFieldValidator, RangeValidator, RegularExpressionVelidator, CompareValidator, CustomValidator e ValidationSummary que se encontram na Toolbox.

Imagem 1

 O RequiredFieldValidator é o componente que verificará se o campo configurado está preenchido, para isso, você deve arrastá-lo para seu formulário em frente ao campo que será validado:

Imagem 2

 

E então configurar suas propriedades:

Imagem 3

 Na propriedade ErrorMessage, você colocará a mensagem que será exibida ao usuário e na propriedade ControlToValidate , a propriedade mais importante onde você definirá o nome do controle que será validado, no nosso caso  txtcidade. Essas são as principais propriedades a serem configuradas do RequiredFieldValidator. 

O próximo controle é o RangeValidator, ele dá a possibilidade de se validar valores entre um intervalo configurado.Neste exemplo vamos avaliar uma idade, se ela está entre 18 à 120 anos.

Começamos arrastando o controle para o formulário:

Imagem 4

 E alterando as seguintes propriedades:

 Imagem 5

Na propriedade ControlToValidate você colocará o Controle que será utilizado, no nosso caso txtIdade, escolheremos a mensagem a ser exibida no ErrorMessage, o valor máximo a ser comparado será colocado em MaximumValue,o valor mínimo em MinimumValue e o Type, que no nosso caso como estamos tratando de números inteiros, escolheremos Integer. 

Agora vamos ver o Controle RegularExpressionValidator, que faz a validação de email, url, além dos RegularExpressions que podem ser personalizados.

Arrastando o controle para o Formulário

Imagem 6

 E agora configurando suas propriedades:

 Imagem 7

Imagem 8

Colocamos a mensagem que será exibida ao usuário em ErrorMessage, na propriedade ControlToValidate escolhemos o campo que será validado, e em ValidationExpression iremos escolher qual RegularExpression que iremos usar, no nosso caso Internet e-mail address para validação do email e Internet URL para validação do Site. Para saber mais sobre como trabalhar com RegularExpressions customizadas acesse http://regexlib.com/default.aspx

O CompareValidator é um controle que permite estar comparando datas, campos, etc. Neste exemplo vou comparar dois campos – Senha e Confirmação de Senha. Para isso arrasto o controle CompareValidator no formulário:

Imagem 9

 E então vou configurar as propriedades:

Imagem 10

Na propriedade ErrorMessage será colocada a mensagem que será exibida ao usuário, na propriedade ControlToCompare será colocado o nome do controle que será comparado, no nosso caso o txtConfirmacaoSenha, no ControlToValidate será colocado o controle que servirá para comparação, no nosso caso o txtSenha, para definirmos que queremos que os campos sejam iguais, escolhemos o Operator como Equals e o Type será do tipo String pois podemos digitar números ou letras.

Utilizamos também o CompareValidator para validarmos uma data, basta você arrastar o controle para o formulário, e configurá-lo da seguinte maneira:

 Imagem 11

Na propriedade ControlToValidate colocaremos o campo que será validado, no nosso caso o txtAniversario,  o ErrorMessage será “Data Inválida”, a propriedade Operator será definida como DataTypeCheck e a propriedade Type será do tipo Date.

Agora  vou falar sobre o CustomValidator, este é um dos componentes de validação que podem ser personalizado. O exemplo a seguir verificará se o número digitado é divisível por 5.

Arrastando o Controle para a página:

Imagem 12

 E agora configurando suas propriedades:

Imagem 13

 

Configuro o ControlToValidate com o textbox que será validado, e o ErrorMessage com a mensagem que será exibida ao usuário.

Agora iremos criar uma função customizada para validar os número divisíveis por 5.

Imagem 14

Na linha 27 foi criado uma variável inteira que recebe o argumento, e na linha seguinte eu tenho o args.IsValid que pega o numero que foi digitado e divide por 5, se o resto for igual a 0 o Argumento é válido, então este numero é divisível por 5. Caso o usuário informe uma letra ao invés de um número e criado uma exceção.

Agora vamos associar esta função no HTML da página.

Imagem 15

Na linha 17 iremos mostrar que nossa validação será feita no servidor para isso usaremos o  comando OnServerValidate que indicará nossa função ValidaNumero. Lembrando também essa chamada pode ser feita com JavaScript mas utilizando o Comando ClientValidationFunction para chamar a função.

Agora por último vamos falar do ValidationSummary, tem como função exibir uma mensagem personalizada através de uma MessageBox contendo todas as validações.

Arrastando o Controle para o Form:

Imagem 16

 E configurando suas propriedades:

 Imagem 17

Na propriedade ShowMessageBox, você configura se quer exibir uma MessageBox, e no ShowSummary, você configura se quer exibir o resumo das validações:

Imagem 18

 

 

MASTER PAGE

O QUE É UMA MASTER PAGE?

Uma Master Page pode ser considerada uma página padrão, um template, ou simplismente um modelo de pagina para seu web site, nela você pode criar modelos e incluir componentes (menu, cabeçalho, rodapé, etc) e estes serão padrões e visíveis em todo o website.
Quando se cria uma master page, podemos dizer para as paginas aspx herdarem todos os componentes e recursos desta master Page.O processo de herança de uma página e uma Master Page é feita em tempo de execução, o que facilita o processo de manutenção do WebSite, pois se você precisar alterar algum controle que está em todas as páginas, basta você alterar este controle na Master Page e todas as páginas que herdam dela serão alteradas automaticamente.

EXEMPLO PRÁTICO

Primeiramente criando um projeto, e nele adicionando um novo item:
Primeiramente criando um projeto, e nele adicionando um novo item
Escolha o Tipo MasterPage, escolha o nome que deseja e clique em ADD.
Escolha o Tipo MasterPage, escolha o nome que deseja e clique em ADD.

 

Para criarmos um design rápido vamos inserir uma tabela no modo Design da MasterPage:
Para criarmos um design rápido vamos inserir uma tabela no modo Design da MasterPage
E então escolher um modelo de Template
E então escolher um modelo de Template

 Agora vamos arrastar o ContentPlaceHolder para a área principal que será alterada na maste Page, este objeto é a área que é definida para o desenvolvedor trabalhar e inserir novos objetos, pois o restante só será alterado na MasterPage, isso para manter o padrão do nosso projeto.

Foto 5

Agora podemos modificar o layout conforme desejamos, neste caso vou inserir mais uma linha em nossa tabelas para colocarmos um menu, colocarei uma imagem com o topo e uma imagem representando o menu lateral:

Foto 6
Foto 7
Agora, vamos fazer com que esta página seja utilizada pelas páginas aspx. Primeiramente vamos adicionar um novo item, neste caso um web form, marque o checkbox Select master Page para que a pagina aspx herde os componentes da página padrão, após isso clique em Add.

Foto 8

Após isso, selecione sua master Page e clique em OK.
Imagem 9
 Automaticamente nossa pagina é criada no nosso Soluction Explorer, e em nosso HTML temos um código simples com @Page que identifica nossa página e uma diretiva chamada master Page file, que nos fornece o caminho da nossa página padrão:
Imagem 10
 Agora no modo Design iremos inserir controles que desejamos, qualquer objeto que desejamos, neste caso vou inserir dois textboxes e um buton.
Imagem 11
Agora basta executar o projeto para verificar o conteúdo da páginas aspx que acabamos de fazer com o design herdado da masterpage.
Certamente as vantagens de se usar este recurso são bem claras, por exemplo, manter um padrão de template para todo o projeto, além desta página estar fixa para todos os desenvolvedores, que só poderá trabalhar no ContentPlaceHolder, adicionando todos os objetos, códigos e informações que necessita, não influênciando em nada a Master Page. Todas as alterações que serão feitas feita, independente do tamanho do projeto, não precisará ser alterada página por página, basta alterar a MasterPage, pois automaticamente todas as páginas aspx que herdarão este template em tempo de execução.
Portanto sem dúvida alguma o recurso de Master Page facilita a produtividade e manutenção das aplicações, além de prover um padrão todo o projeto.

Seguir

Obtenha todo post novo entregue na sua caixa de entrada.

Join 155 other followers