EDIÇÃO
FCA – Editora de Informática, Lda. Av. Praia da Vitória, 14 A – 1000-247 Lisboa Tel: +351 213 511 448
fca@fca.pt www.fca.pt DISTRIBUIÇÃO
Lidel – Edições Técnicas, Lda.
Rua D. Estefânia, 183, R/C Dto. – 1049-057 Lisboa Tel: +351 213 511 448
lidel@lidel.pt www.lidel.pt LIVRARIA
Av. Praia da Vitória, 14 A – 1000-247 Lisboa Tel: +351 213 511 448 * Fax: +351 213 522 684 livraria@lidel.pt
Copyright © 2017, FCA – Editora de Informática, Lda. ISBN edição impressa: 978-972-722-868-3
1.ª edição impressa: julho 2017
Impressão e acabamento: Cafilesa – Soluções Gráficas, Lda. – Venda do Pinheiro Depósito Legal n.º 428410/17
Capa: José M. Ferrão – Look-Ahead
Todos os nossos livros passam por um rigoroso controlo de qualidade, no entanto aconselhamos a consulta periódica do nosso site (www.fca.pt) para fazer o download de eventuais correções.
Não nos responsabilizamos por desatualizações das hiperligações presentes nesta obra, que foram verificadas à data de publicação da mesma.
Os nomes comerciais referenciados neste livro têm patente registada.
Reservados todos os direitos. Esta publicação não pode ser reproduzida, nem transmitida, no todo ou em parte, por qualquer processo eletrónico, mecânico, fotocópia, digitalização, gravação, sistema de armazenamento e disponibilização de informação, sítio Web, blogue ou outros, sem prévia autorização escrita da Editora, exceto o permitido pelo CDADC, em termos de cópia privada pela AGECOP – Associação para a Gestão da Cópia Privada, através do pagamento das respetivas taxas.
©
©FFCCAA––EEddiittoorraaddeeIInnffoorrmmááttiiccaa
Í
Í
N
N
D
D
I
I
C
C
E
E
G
G
E
E
R
R
A
A
L
L
PRÓLOGO ... IX
COMO UTILIZAR ESTE LIVRO ... XI
PARTEI:TEÓRICO-PRÁTICA ... 1
1.INTRODUÇÃO ... 3
1.1 Ambiente de desenvolvimento ... 3
1.2 Sensibilização ao sistema de ajuda ... 11
1.3 Aplicações-consola ... 12
1.4 Convenções de código ... 13
1.5 Módulos de classe ... 14
1.6 Declaração de variáveis ... 15
1.7 Declaração de constantes ... 18
1.8 Leitura de dados provenientes do utilizador ... 18
1.9 Apresentação de dados ao utilizador ... 19
1.10 Comentários... 20
1.11 Regras e convenções de nomenclatura ... 20
1.12 Fases de desenvolvimento de um programa ... 21
1.13 Exercícios propostos ... 24 2.ELEMENTOS DE PROGRAMAÇÃO ... 25 2.1 Tipos de dados ... 25 2.2 Declaração de variáveis ... 31 2.3 Tabelas ... 33 2.4 Operadores ... 35 2.5 Estruturas de controlo ... 38 2.6 Exercícios resolvidos ... 45 2.7 Exercícios propostos ... 49
3.PROGRAMAÇÃO ORIENTADA A OBJETOS ... 51
3.1 Conceitos gerais ... 51 3.2 Classes ... 52 3.3 Herança ... 60 3.4 Polimorfismo ... 62 3.5 Interfaces ... 64 3.6 Exercícios resolvidos ... 65 3.7 Exercícios propostos ... 69 4.FUNÇÕES INTRÍNSECAS ... 71 4.1 Funções matemáticas ... 71 4.2 Funções de texto ... 75
4.3 Funções de data e hora ... 78
C
C
#
#
7
7
.
.
0
0
CCOOMMV
V
ISISUUAALLS
S
TUTUDDIIOO–
–
C
C
URURSSOOC
C
OMOMPPLLEETTOO © ©FFCCAA––EEddiittoorraaddeeIInnffoorrmmááttiiccaa IV 4.5 Funções de formatação ... 80 4.6 Exercícios resolvidos ... 80 4.7 Exercícios propostos ... 85 5.WINDOWS FORMS ... 87 5.1 Apresentação ... 87 5.2 Criação de projetos ... 87 5.3 Caixas de diálogo ... 90 5.4 Controlos ... 93 5.5 Convenções de nomenclatura ... 104 5.6 Objeto Form ... 104 5.7 Controlo Label ... 121 5.8 Controlo Button ... 126 5.9 Controlo TextBox ... 1285.10 Controlos ComboBox e ListBox ... 133
5.11 Controlos CheckBox e RadioButton ... 140
5.12 Exercícios resolvidos ... 142
5.13 Exercícios propostos ... 155
6.MODELAÇÃO DE DADOS ... 157
6.1 Sistemas de gestão de bases de dados ... 157
6.2 Estruturação de uma base de dados ... 158
6.3 Normalização ... 159 6.4 Modelo entidade-relação ... 166 6.5 Exercícios resolvidos ... 172 6.6 Exercícios propostos ... 181 7.LINQ ... 185 7.1 O que é a LINQ? ... 185
7.2 Apresentação de um caso real ... 185
7.3 Exercícios resolvidos ... 202
7.4 Exercícios propostos ... 207
8.TAREFAS DE SISTEMA OPERATIVO ... 209
8.1 Gestão do sistema de ficheiros ... 209
8.2 Deteção de software ... 217
8.3 Deteção de hardware ... 219
8.4 Gestão de processos ... 221
8.5 Definições regionais e globalização ... 223
8.6 Exercícios resolvidos ... 223
8.7 Exercícios propostos ... 229
9.ACESSO A FICHEIROS DE TEXTO ... 231
9.1 Introdução ... 231
9.2 Acesso e manipulação de ficheiros ... 231
9.3 Exercícios resolvidos ... 235
Í
Í
NDNDIICCEEG
G
ERERAALL © ©FFCCAA––EEddiittoorraaddeeIInnffoorrmmááttiiccaa V 10.IMPRESSÃO ... 243 10.1 Sensibilização ambiental ... 243 10.2 Classe PrintDocument ... 244 10.3 Exercício resolvido ... 244 10.4 Exercícios propostos ... 250 11.PROGRAMAÇÃO FUNCIONAL ... 251 11.1 Noções gerais ... 251 11.2 Criação de projetos ... 251 11.3 Primeira aplicação ... 252 11.4 Arquitetura F# ... 253 11.5 Exercício resolvido... 258 11.6 Exercícios propostos ... 259 12.INTEGRAÇÃO COM XML ... 261 12.1 Apresentação ... 261 12.2 Sintaxe XML ... 261 12.3 Criação de um ficheiro XML ... 263 12.4 Manipulação de ficheiros XML ... 264 12.5 Formatação ... 275 12.6 Validação ... 277 12.7 Exercícios resolvidos ... 281 12.8 Exercícios propostos ... 28513.WINDOWS PRESENTATION FOUNDATION ... 287
13.1 Noções gerais ... 287 13.2 Criação de projetos ... 287 13.3 Classe Window ... 288 13.4 Classe Grid ... 292 13.5 Multimédia ... 295 13.6 Exercícios resolvidos ... 319 13.7 Exercícios propostos ... 326
14.DESENVOLVIMENTO PARA A MICROSOFT STORE ... 327
14.1 Interface de utilizador ... 327 14.2 Primeira aplicação ... 328 14.3 Framing ... 336 14.4 Exercícios resolvidos ... 341 14.5 Exercícios propostos ... 353 15.PROGRAMAÇÃO MÓVEL ... 355 15.1 Xamarin ... 355 15.2 Emuladores ... 355 15.3 “Hello World” ... 356 15.4 Exercícios propostos ... 359 16.ASP.NET ... 361 16.1 Conceitos gerais ... 361 16.2 Criação de projetos ... 362
C
C
#
#
7
7
.
.
0
0
CCOOMMV
V
ISISUUAALLS
S
TUTUDDIIOO–
–
C
C
URURSSOOC
C
OMOMPPLLEETTOO © ©FFCCAA––EEddiittoorraaddeeIInnffoorrmmááttiiccaa VI 16.3 ASPX ... 363 16.4 ASPX.CS ... 364 16.5 Execução ... 365 16.6 Exercício resolvido ... 366 16.7 Exercícios propostos ... 37017.INTEGRAÇÃO COM O OFFICE ... 371
17.1 Introdução ... 371
17.2 Integração com o Excel ... 371
17.3 Integração com o Word ... 382
17.4 Integração com o Powerpoint ... 385
17.5 Integração com o Access ... 390
17.6 Integração com o Outlook ... 393
17.7 Exercícios propostos ... 396
18.USABILIDADE ... 397
18.1 Interfaces ... 397
18.2 As 10 heurísticas de Nielsen ... 401
18.3 Design de aplicações desktop ... 403
18.4 Design de aplicações móveis ... 410
18.5 Design de aplicações Web ... 411
PARTEII:PROJETOS E ANEXO ... 413
19.PROJETO I:WINDOWS FORMS ... 415
19.1 Desenho da base de dados ... 415
19.2 Desenvolvimento da interface ... 419
19.3 Exercícios propostos ... 448
20.PROJETO II:WINDOWS PRESENTATION FOUNDATION ... 449
20.1 Objetivo ... 449
20.2 Criação do projeto ... 450
20.3 Desenho da base de dados ... 450
20.4 Desenvolvimento da interface ... 451
20.5 Exercícios propostos ... 462
21.PROJETO III:MICROSOFT STORE ... 463
21.1 Criação do projeto ... 463
21.2 Importação das bandeiras ... 463
21.3 Desenho da interface e programação ... 464
21.4 Resultado ... 467
21.5 Exercícios propostos ... 468
22.PROJETO IV:PROGRAMAÇÃO MÓVEL ... 469
22.1 Objetivo ... 469
22.2 Regras ... 469
22.3 Desenvolvimento da interface ... 471
22.4 Programação do jogo ... 473
Í
Í
NDNDIICCEEG
G
ERERAALL©
©FFCCAA––EEddiittoorraaddeeIInnffoorrmmááttiiccaa VII
23.PROJETO V:ASP.NET E OFFICE ... 489
23.1 Objetivo ... 489
23.2 Importação das imagens (estrelas) ... 489
23.3 Desenho da interface ... 491
23.4 Implementação da pesquisa ... 492
23.5 Exercícios propostos ... 496
A.ANEXO: TABELAS AUXILIARES E COMPLEMENTOS ... 497
A.1 Ambiente integrado ... 497
A.2 Sequências de escape ... 499
A.3 Máscaras de formatação ... 500
A.4 Máscaras de introdução ... 501
A.5 Relação de tipos de dados ... 501
A.6 Códigos ASCII ... 502
GLOSSÁRIO DE TERMOS –PORTUGUÊS EUROPEU/PORTUGUÊS DO BRASIL ... 505
©
©
©FFCCAA––EEddiittoorraaddeeIInnffoorrmmááttiiccaa
P
P
R
R
Ó
Ó
L
L
O
O
G
G
O
O
“A melhor maneira de predizer o futuro é inventá-lo.”Alan Kay
Durante o desenvolvimento da plataforma .NET, a Microsoft formou uma equipa
liderada por Anders Hejlsberg
1para criar uma nova linguagem que desse suporte às
bibliotecas de objetos e que conseguisse ultrapassar alguns obstáculos relacionados com a
implementação desta tecnologia em diferentes ambientes. No ano 2000 foi apresentada a
linguagem de programação C#
2, tendo sido descrita como uma evolução superior da C
3.
Influenciada pelas linguagens C++
4e Java
5, a versão 1.0 da C# obteve grande
popularidade junto da comunidade informática quando a Microsoft decidiu incluí-la no
pacote de ferramentas de desenvolvimento Visual Studio .NET 2002. Após um ano, a
empresa anunciou o lançamento do Visual Studio .NET 2003, que incluiu o suporte para
dispositivos portáteis e respetivos sistemas operativos (Windows Compact Edition
6e
Pocket PC
7).
Devido ao crescente sucesso do Visual Studio, a C# tornou-se rapidamente uma
das linguagens mais utilizadas em todo o mundo, pois as software houses depressa
conse-guiram identificar as enormes vantagens de combinar a estabilidade e versatilidade desta
nova linguagem com a elevada produtividade e simplicidade típica das ferramentas da
Microsoft.
1 Engenheiro de software dinamarquês (Copenhaga, 1960), responsável pelo desenvolvimento das
linguagens de programação Delphi e Turbo Pascal.
2 Pronuncia-se see sharp (combinação da letra cê e do símbolo cardinal, em inglês).
3 Linguagem de programação especificamente projetada para o sistema operativo UNIX. Foi
desenvolvida, em 1972, pelo norte-americano Dennis Ritchie (Nova Iorque, 1941).
4 Linguagem de programação baseada em C, com novos e importantes recursos tecnológicos. Foi
desenvolvida, na década de 1980, pelo dinamarquês Bjarne Stroustrop (Arhus, 1950).
5 Plataforma (e linguagem de programação) criada pela Sun Microsystems, na década de 1990. 6 Sistema operativo lançado pela Microsoft, em setembro de 1996, especialmente desenhado para
pequenos dispositivos, como PDA e smartphones; é frequentemente abreviado para Windows CE.
C
C
#
#
7
7
.
.
0
0
CCOOMMV
V
ISISUUAALLS
S
TUTUDDIIOO–
–
C
C
URURSSOOC
C
OMOMPPLLEETTOO©
©FFCCAA––EEddiittoorraaddeeIInnffoorrmmááttiiccaa X
A versão 2.0 da C# foi lançada com o Visual Studio 2005, a versão 3.0 com o Visual
Studio 2008, a versão 4.0 com o Visual Studio 2010, a versão 5.0 com o Visual Studio 2012 e
a versão 6.0 com o Visual Studio 2015. Atualmente, a C# pode ser encontrada na versão 7.0,
estando completamente integrada no Visual Studio 2017 e trazendo consigo, para além de
melhoramentos significativos ao nível do desenvolvimento de aplicações para a Microsoft
Store
8, a possibilidade de se criarem aplicações para plata-formas móveis concorrentes do
Windows Mobile
9, como o Android
10e o iOS
11.
Curiosamente, a C# combina duas das minhas grandes paixões: a programação e
a música. Segundo consta, “C#” acolheu uma inspiração musical, pois “C” representa a
nota Dó e o cardinal (#) representa um semitom acima da nota Dó. Simplificando, e para os
menos entendidos nesta matéria, será um som que podemos situar entre as notas Dó e Ré.
Esta ideia insólita surgiu da tentativa de elevar a linguagem C a um patamar de evolução
que transcendesse o já existente (o da linguagem C++); na minha opinião, e como músico
amador que sou, o resultado foi, para além de curioso, bastante original e inspirador.
Pretendo, com este livro, para além de partilhar grande parte do conhecimento que
adquiri ao longo da minha vida profissional e académica, espelhar o reconhecimento do
trabalho que tenho desenvolvido em conjunto com os editores e com todos os profissionais
da FCA, a quem gostaria de deixar um agradecimento especial pelas palavras e gestos de
apoio que recebi ao longo de mais de uma década de edições.
Henrique Loureiro
8 Plataforma de distribuição de aplicações em formato digital integrada nos sistemas operativos
Windows 8 e superiores.
9 Edição do sistema operativo Windows para dispositivos móveis, desenvolvida pela Microsoft; foi
lançada em 2015 e é a sucessora do Windows Phone.
10 Plataforma baseada em Linux, atualmente produzida pela Google Inc.; é o sistema operativo móvel
mais utilizado em todo o mundo.
11 Sistema operativo móvel da Apple Inc., surgido em 2007; foi originalmente desenvolvido para o
© FCA – Editora de Informática
C
C
O
O
M
M
O
O
U
U
T
T
I
I
L
L
I
I
Z
Z
A
A
R
R
E
E
S
S
T
T
E
E
L
L
I
I
V
V
R
R
O
O
Com o objetivo de facilitar uma aprendizagem rápida e eficaz, tomamos a
liber-dade de sugerir um conjunto de indicações às quais o leitor deverá dar especial atenção
de forma a tirar o maior proveito deste livro.
Os diferentes temas foram encadeados pedagógica e naturalmente, pelo que não é,
de todo, recomendado que progrida sem a compreensão das matérias abordadas em
capítulos anteriores. A tabela que se segue apresenta um resumo dos principais conteúdos
tratados nesta obra.
CAPÍTULO TÍTULO PRINCIPAIS TEMAS/ASSUNTOS
1 Introdução
Apresentação do ambiente de desenvolvimento Criação e organização de projetos
Sensibilização ao sistema de ajuda Convenções de código e de nomenclatura Criação de módulos e procedimentos Utilização de variáveis e constantes
Desenvolvimento de aplicações-consola simples
2 Elementos de Programação
Tipos de dados e literais
Declaração e utilização de tabelas de dados (arrays) Expressões e operadores
Recurso a estruturas de controlo (condições e ciclos) 3
Programação Orientada a Objetos
Paradigmas da programação orientada a objetos Noção de classe e grupo
Atributos, métodos, mensagens, estados e eventos
4 Funções Intrínsecas
Funções matemáticas Funções de texto Funções de data e hora Funções de array Funções de formatação
5 Windows Forms
Caixas de diálogo padrão de sistema operativo Utilização de controlos gerais
Manipulação de propriedades Recurso a métodos
Programação por eventos 6 Modelação de Dados Normalização
C
C
#
#
7
7
.
.
0
0
CCOOMMV
V
ISISUUAALLS
S
TUTUDDIIOO–
–
C
C
URURSSOOC
C
OMOMPPLLEETTOO©
©FFCCAA––EEddiittoorraaddeeIInnffoorrmmááttiiccaa XII
CAPÍTULO TÍTULO PRINCIPAIS TEMAS/ASSUNTOS
7 LINQ
Acesso ao SQL Server (local) Criação de classes DataContext
Consulta a dados e obtenção de listagens
Manipulação da informação (inserção, eliminação e atua-lização de registos)
8
Tarefas de Sistema Operativo
Gestão completa do sistema de ficheiros do Windows (criação, eliminação, cópia, deslocação e renomeação de diretórios e ficheiros)
Deteção de software Deteção de hardware Gestão de processos Gestão de serviços
Definições regionais e globalização
9
Acesso a Ficheiros de Texto
Criação de ficheiros de texto
Abertura e fecho de ficheiros de texto Leitura por recurso à classe StreamReader Escrita por recurso à classe StreamWriter Encriptação
Aplicação prática
10 Impressão
Sensibilização ambiental
Utilização de controlos específicos para impressão Paginação
Criação de relatórios completos 11 Programação Funcional Arquitetura da linguagem F# Integração com C# 12 Integração com XML Leitura de ficheiros XML Escrita em ficheiros XML Formatação XML Validação XML 13 Windows Presentation Foundation
Recurso à linguagem XAML para o desenvolvimento de interfaces gráficas
Utilização de controlos gerais Aplicação multimédia
Databinding
14 Desenvolvimento para a Microsoft Store
Recurso à linguagem XAML para o desenvolvimento de interfaces gráficas
Idealização de layouts através de framing Utilização de controlos gerais
Acesso a recursos disponíveis na Web 15 Programação Móvel Xamarin Forms
C
C
OMOMOOU
U
TTIILLIIZZAARRE
E
STSTEEL
L
IIVVRROO© FCA – Editora de Informática XIII CAPÍTULO TÍTULO PRINCIPAIS TEMAS/ASSUNTOS
16 ASP.NET
Modelo Web Forms Criação de páginas Code-behind Utilização de controlos Request/Response 17 Integração com o Office Princípios da Interop Integração com o Word Integração com o Excel Integração com o Powerpoint Integração com o Access Integração com o Outlook 18 Usabilidade
Heurísticas de Nielsen Normas ISO
Adaptação a aplicações desktop, móveis e Web
São ainda incluídos cinco projetos integralmente resolvidos, que irão permitir aos
leitores solidificarem os conhecimentos adquiridos ao longo da obra (tabela seguinte).
CAPÍTULO TÍTULO:TEMA/ASSUNTO 19 Projeto I: Windows Forms
20 Projeto II: Windows Presentation Foundation 21 Projeto III: Microsoft Store
22 Projeto IV: Programação Móvel 23 Projeto V: ASP.NET e Office
Sugerimos também a resolução dos exercícios propostos, que são apresentados
no final dos capítulos; nesta fase, aconselhamos que os resolva por mera consulta do livro
e das dicas apresentadas no Anexo – Ajuda à Resolução dos Exercícios Propostos,
dispo-nível na página do livro em www.fca.pt (até este se esgotar ou ser publicada nova edição
atualizada ou com alterações), e que depois compare os seus resultados com as soluções
que disponibilizamos também na página do livro em www.fca.pt (nos mesmos moldes).
C
C
O
O
N
N
V
V
E
E
N
N
Ç
Ç
Õ
Õ
E
E
S
S
Associado a esta estrutura criou-se um conjunto de convenções com o objetivo de
facilitar a compreensão das matérias.
E
E
XEXEMMPPLLOOC
C
#
#
7
7
.
.
0
0
CCOOMMV
V
ISISUUAALLS
S
TUTUDDIIOO–
–
C
C
URURSSOOC
C
OMOMPPLLEETTOO © ©FFCCAA––EEddiittoorraaddeeIInnffoorrmmááttiiccaa XIVC
C
ÓDÓDIIGGOOTodos os excertos de código são apresentados no mesmo formato, sendo
frequente a junção de um comentário adicional a cinza:
string nome;//Declaração de uma variável
S
S
ININTTAAXXEEExplicação de como deve escrever as instruções e as palavras-chave da
linguagem C# para que as mesmas sejam devidamente compiladas.
A
A
NÁNÁLLIISSEEInterpretação teórica de um bloco de código e explicação do seu objetivo.
Sempre que aparecer esta apresentação gráfica, isso significa que são fornecidas ao leitor dicas, isto é, informações úteis e complementares sobre a matéria que, essencialmente, permitem tornar as tarefas mais fáceis.
Sempre que necessário, aparecem pequenas notas com descrição complementar à matéria tratada nessa secção, com o objetivo de fornecer ao leitor esclarecimentos adicionais, embora não essenciais, sobre a matéria.
G
G
L
L
O
O
S
S
S
S
Á
Á
R
R
I
I
O
O
D
D
E
E
T
T
E
E
R
R
M
M
O
O
S
S
–
–
P
P
O
O
R
R
T
T
U
U
G
G
U
U
Ê
Ê
S
S
E
E
U
U
R
R
O
O
P
P
E
E
U
U
/
/
P
P
O
O
R
R
T
T
U
U
G
G
U
U
Ê
Ê
S
S
D
D
O
O
B
B
R
R
A
A
S
S
I
I
L
L
Para facilitar a interpretação do texto por parte dos leitores brasileiros, incluímos
um glossário de outros termos correspondentes que, embora não estejam presentes na
interface de utilizador do Visual Studio, são utilizados pelo Autor na explicação das
matérias. Este glossário pode ser consultado no final do livro.
S
S
O
O
F
F
T
T
W
W
A
A
R
R
E
E
U
U
T
T
I
I
L
L
I
I
Z
Z
A
A
D
D
O
O
Este livro foi escrito com base na edição Community do Visual Studio 2017 e na
edição Professional do sistema operativo Windows 10, não se prevendo que venham a
ocorrer alterações significativas entre estas versões e eventuais updates.
Consulte o Guia de Instalação, disponível na página do livro em www.fca.pt,
para obter informações detalhadas acerca dos componentes de software complementares e
dos respetivos processos de instalação e configuração.
© FCA – Editora de Informática
2
1
1
1
1
1
1
11P
P
RO
R
OG
G
R
R
AM
A
MA
AÇ
ÇÃ
ÃO
O
F
F
U
U
N
N
C
C
I
I
O
O
N
N
A
A
L
L
Neste capítulo iremos focar os conceitos inerentes à programação funcional, com a apresen-tação de alguns exemplos escritos em F#. Serão também enunciados os procedimentos necessários para a integração direta de código F# em projetos C#.
11.1
N
N
O
O
Ç
Ç
Õ
Õ
E
E
S
S
G
G
E
E
R
R
A
A
I
I
S
S
F# é uma linguagem de programação funcional, o que significa que o
desenvolvi-mento computacional é encarado como uma avaliação de funções matemáticas (podemos
dizer que as aplicações consistem basicamente em funções que recebem outras funções
como entrada de informação). Em contraste com as linguagens de programação
imperati-vas, tais como as linguagens C# e Java, que se focam em variáveis e mudanças no estado
da aplicação, na programação funcional as variáveis são tratadas como funções, sendo
uma função a geradora de um único valor de retorno e podendo, eventualmente, servir-
-se de parâmetros de entrada para que a operação de cálculo seja devidamente efetuada.
Embora as linguagens de programação funcional tendam a ser utilizadas numa
vertente mais académica do que propriamente no desenvolvimento comercial de software,
têm vindo a adquirir uma importância significativa em diversas áreas, tais como pesquisa
científica, multimédia e telecomunicações. É bom lembrar que existem outras linguagens
de programação funcional, sendo que uma das mais relevantes é a linguagem LISP
1.
11.2
C
C
R
R
I
I
A
A
Ç
Ç
Ã
Ã
O
O
D
D
E
E
P
P
R
R
O
O
J
J
E
E
T
T
O
O
S
S
Os projetos baseados em F# são criados no Visual Studio com a mesma facilidade
com que se criam aplicações-consola, existindo templates específicos para o efeito. Assim,
e após o pedido de criação de um novo projeto através da opção de menu habitual File
New Project, deverá escolher o item Console Application, da categoria de templates
Visual F# (Figura 11.1).
1 Acrónimo de ListProcessing; linguagem de programação funcional, concebida por John McCarthy,
C
C
#
#
7
7
.
.
0
0
CCOOMMV
V
ISISUUAALLS
S
TUTUDDIIOO–
–
C
C
URURSSOOC
C
OMOMPPLLEETTOO © ©FFCCAA––EEddiittoorraaddeeIInnffoorrmmááttiiccaa 252 FFIIGGUURRAA1111..11–Criação de um projeto F# (aplicação-consola)
Este é o template utilizado no desenvolvimento de aplicações F# que possuem uma utilização mais persistente. Para além deste tipo de projetos, pode ainda criar bibliotecas baseadas em F#, que são perfeitamente reutilizáveis em projetos de natureza diversa. A criação de bibliotecas F# e a sua integração em projetos C# será explicada em detalhe na secção 11.5.
Após a criação do projeto, deverá surgir o código contido no ficheiro Program.fs
(acessível via Solution Explorer):
[<EntryPoint>] let main argv = printfn "%A" argv 0
A
A
NÁNÁLLIISSEEEm F#, as funções são tratadas como tipos de dados – podemos declarar e utilizar
uma função do mesmo modo como fazemos com qualquer variável. A função
argv(declarada com a palavra-chave
lete com o modificador
main) recebe como parâmetro
de entrada um valor, o qual é impresso (
printfn) no ecrã logo que a função seja
invocada. No final da execução, é retornado o valor
0como código de saída.
Geralmente, as aplicações F# prescindem de um ponto de entrada (<EntryPoint>) específico, até porque o compilador executa todas as instruções contidas no módulo de programação principal, normalmente, no sentido de cima para baixo.
11.3
P
P
R
R
I
I
M
M
E
E
I
I
R
R
A
A
A
A
P
P
L
L
I
I
C
C
A
A
Ç
Ç
Ã
Ã
O
O
Nesta secção iremos criar uma aplicação muito simples que consiste em somar
dois valores numéricos e mostrar o resultado ao utilizador na janela de consola. Assim,
aceda ao módulo Program.fs que criou na secção anterior e edite-o cf. o Código seguinte.
C
C
ÓÓDDIIGGOOlet x = 2 let y = 3 let z = x + y
P
P
RROOGGRRAAMMAAÇÇÃÃOOF
F
UUNNCCIIOONNAALL© FCA – Editora de Informática 253
A
A
NÁNÁLLIISSEEForam declaradas três funções: x e y correspondem ao primeiro e ao último
membros da operação, respetivamente; e z corresponde à soma. Através da função
printfn, intrínseca da linguagem F#, “disparou-se” o resultado para a janela de consola
(aqui incluiu-se
%ipara que os valores sejam devidamente convertidos do tipo de dados
int para string e passados pela mesma ordem com que surgem na instrução).
Por predefinição, uma função sem tipo de dados definido é assumida como tendo um retorno do tipo int (número inteiro). Consulte na secção 11.4.3 os tipos de dados mais utilizados em F#.
T
T
ESESTTEEPara testar este pequeno exemplo, execute o comando de menu Debug Start
Without Debugging (Figura 11.2). Isto permite que a janela de consola permaneça no
ecrã, para que seja possível visualizar o resultado (
"A soma entre 2 e 3 é 5").
F
FIIGGUURRAA1111..22–Pedido de execução do projeto F#
A secção 11.4 irá apresentar os elementos de programação mais relevantes da
linguagem F# para que o leitor fique apto a criar as suas primeiras aplicações e a entender
a forma como o código se articula.
11.4
A
A
R
R
Q
Q
U
U
I
I
T
T
E
E
T
T
U
U
R
R
A
A
F
F
#
#
São muitas as semelhanças que podem ser encontradas entre as liguagens C# e F# em
termos dos elementos de programação basilares (funções, tipos de dados e estruturas de
controlo). Sirva-se do projeto que criou na secção 11.2 para testar todos os exemplos
apresentados ao longo desta secção.
11.4.1
C
C
O
O
M
M
E
E
N
N
T
T
Á
Á
R
R
I
I
O
O
S
S
Tal como na linguagem C#, os comentários ao código F# podem ser de linha
completa ou aplicados a múltiplas linhas.
C
C
#
#
7
7
.
.
0
0
CCOOMMV
V
ISISUUAALLS
S
TUTUDDIIOO–
–
C
C
URURSSOOC
C
OMOMPPLLEETTOO © ©FFCCAA––EEddiittoorraaddeeIInnffoorrmmááttiiccaa 254E
E
XXEEMMPPLLOOlet x = 2 //Comentário de linha completa
let y = x * 2 //Comentário de linha completa (* comentário de múltiplas linhas -> devolver resultado*)
printfn "Resultado: %i" y
11.4.2
E
E
N
N
T
T
R
R
A
A
D
D
A
A
E
E
S
S
A
A
Í
Í
D
D
A
A
D
D
E
E
I
I
N
N
F
F
O
O
R
R
M
M
A
A
Ç
Ç
Ã
Ã
O
O
Vimos que, em aplicações-consola escritas em C#, é possível fazer-se uso dos
métodos padrão de leitura (Read e ReadLine) e escrita (Write e WriteLine) de dados que o objeto
Console proporciona. Em F# é possível fazer-se o mesmo, sendo que a diferença reside na
importação da namespace System – em C# emprega-se a palava-chave using, mas em F#
recorre-se à palavra-chave open (cf. Exemplo).
E
E
XEXEMMPPLLOOopen System //Importação da namespace //Entrada de dado Console.Write("Valor: ") let x = Console.ReadLine() //Cálculo (dobro de x) let y = (int) x * 2 //Saída de resultado
Console.WriteLine ("Resultado: " + y.ToString())
A
A
NÁNÁLLIISSEENesta aplicação solicita-se ao utilizador a introdução de um valor (x), através do
método Readline, para que seja determinado o seu dobro. Como o método Readline
devolve uma cadeia alfanumérica de carateres, aquando do cálculo o dado de entrada foi
convertido diretamente para int. No final, foi utilizado o método ToString para fazer o
inverso, isto é, para converter o valor inteiro obtido no resultado do cálculo para o tipo de
dados string.
11.4.3
T
T
I
I
P
P
O
O
S
S
D
D
E
E
D
D
A
A
D
D
O
O
S
S
Como referido anteriormente, quando uma função não é declarada como sendo
de um tipo de dados específico, é assumido o tipo de dados int. Então, para declarar
explicitamente uma função, deverá escrever o tipo de dados seguido do nome da função,
separados por dois pontos.
© FCA – Editora de Informática
2
1
1
1
6
6
6
88A
A
S
S
P
P
.
.
N
N
E
E
T
T
Este capítulo introduz os conceitos inerentes ao desenvolvimento de aplicações e páginas da Web com recurso à tecnologia ASP.NET. Serão estudadas as metodologias que permitem a integração da ASP.NET com a linguagem C# presente no Visual Studio.
16.1
C
C
O
O
N
N
C
C
E
E
I
I
T
T
O
O
S
S
G
G
E
E
R
R
A
A
I
I
S
S
ASP.NET
1é uma tecnologia, não uma linguagem de programação. Através do
Visual Studio e de uma linguagem integrada na framework .NET, como a C#, é permitido o
desenvolvimento de aplicações e páginas dinâmicas, especificamente destinadas à Web,
com elevada interatividade. Estas aplicações requerem um servidor IIS
2para que possam
ser executadas em ambientes Windows; no entanto, existem projetos alternativos, como o
Mono, capazes de executar aplicações baseadas em ASP.NET em plataformas Linux.
No seio da ASP.NET existem dois modelos de computação totalmente distintos –
o Web Forms e o Model View Controller (MVC) –, mas que podem ser combinados e
utili-zados em simultâneo: o Web Forms é o modelo tradicional e o mais simples de programar
(a criação de aplicações segue a mesma filosofia da tecnologia Windows Forms,
mantendo--se a conhecida técnica de drag-and-drop para proceder ao desenho imediato dos elementos
gráficos da página); por seu lado, o MVC constitui um modelo alternativo, tendo surgido
da necessidade de se obter um código mais “limpo” e reutilizável, com recurso à separação
em diferentes camadas dos dados, da visualização e dos controlos. O modelo Web Forms
foi o primeiro a facultar o desenvolvimento Web através da plataforma .NET e é
atual-mente o mais utilizado.
As secções 16.2 a 16.4 apresentam os procedimentos iniciais envolvidos na criação
de projetos ASP.NET segundo o modelo Web Forms.
1 Do inglês Active Server Pages; é a plataforma por excelência da Microsoft para o desenvolvimento de
aplicações Web.
2 Do inglês Internet Information Services; é o servidor da Microsoft que permite o alojamento e a
C
C
#
#
7
7
.
.
0
0
CCOOMMV
V
ISISUUAALLS
S
TUTUDDIIOO–
–
C
C
URURSSOOC
C
OMOMPPLLEETTOO© FCA – Editora de Informática 362
16.2
C
C
R
R
I
I
A
A
Ç
Ç
Ã
Ã
O
O
D
D
E
E
P
P
R
R
O
O
J
J
E
E
T
T
O
O
S
S
A criação de projetos ASP.NET baseados em Web Forms segue a mesma filosofia
da criação de projetos de outra natureza no Visual Studio. Assim, considere o
procedi-mento que apresentamos em seguida:
1) Execute o comando de menu File
New Project.2) Na caixa de diálogo New Project (Figura 16.1), selecione o template ASP.NET
Web Application, atribua o nome ao projeto e confirme em OK.
F
FIIGGUURRAA1166..1 1––Criação de um projeto ASP .NET
3) Na caixa de diálogo New ASP.NET Web Application (Figura 16.2), selecione
o modelo Web Forms e confirme a criação do projeto em OK.
F
FIIGGUURRAA1166..22 ––Seleção do modelo Web Forms
No caso das aplicações que requerem autenticações especiais, poderá configurar à partida o acesso por parte dos utilizadores, clicando em Change Authentication.
A
A
S
S
P
P
.
.
N
N
E
E
T
T
© FCA – Editora de Informática 363
16.3
A
A
S
S
P
P
X
X
O Visual Studio cria um site básico, que consiste num conjunto de páginas
agregadas num container, designado por master. Para este exemplo em concreto, e como
pretendemos criar uma aplicação mínima, com apenas uma página, considere a abertura
do ficheiro Default.aspx, a partir do Solution Explorer (Figura 16.3). Este ficheiro
corres-ponde, normalmente, à página de entrada no site (home page).
F
FIIGGUURRAA1166..33 ––Acesso ao ficheiro Default.aspx
Iremos, então, criar uma página simples, contendo apenas um controlo básico,
para apresentação de um pequeno excerto de texto. Assim, edite o conteúdo da página
Default.aspx cf. Código seguinte.
C
C
ÓDÓDIIGGOO<%@ Page Language="C#" AutoEventWireup="true"
CodeBehind="Default.aspx.cs" Inherits="ASPWebForms._Default" %> <html> <head runat="server"> <title>Home Page</title> </head> <body>
<form id="form1" runat="server"> <div>
<asp:Label runat="server" id="labelTeste"></asp:Label> </div>
</form> </body> </html>
C
C
#
#
7
7
.
.
0
0
CCOOMMV
V
ISISUUAALLS
S
TUTUDDIIOO–
–
C
C
URURSSOOC
C
OMOMPPLLEETTOO© FCA – Editora de Informática 364
A
A
NÁNÁLLIISSEEComo pode constatar, os ficheiros com extensão aspx são praticamente idênticos
aos ficheiros regulares da HTML, compostos pelas habituais tags <html>, <head> e <body>.
A principal diferença encontrada reside na presença de uma diretiva que é incluída no topo
do ficheiro e que instrui o browser de que a página contém código C# associado (comummente
designado por code-behind). Os controlos específicos de ASP são distinguidos pela tag <asp:>
(no presente caso foi incluído um controlo da categoria Label num formulário HTML).
A secção 16.4 demonstra como associar código C# à página ASP.
16.4
A
A
S
S
P
P
X
X
.
.
C
C
S
S
O ficheiro com extensão aspx.cs contém a parte lógica da aplicação e é o que, de
facto, estabelece a ponte entre os elementos gráficos e a dinâmica da página, tornando-a
interativa. Aceda ao ficheiro Default.aspx.cs a partir do Solution Explorer (Figura 16.4).
F
FIIGGUURRAA1166..4 4––Acesso ao ficheiro Default.aspx.cs
Na secção 16.3 foi incluído um controlo da categoria Label, porém, sem qualquer
texto associado. Pretende-se, agora, definir um texto inicial quando a página é carregada;
para tal, edite o conteúdo do ficheiro Default.aspx.cs cf. Código seguinte.
C
C
ÓDÓDIIGGOO using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; namespace ASPWebForms {A
A
S
S
P
P
.
.
N
N
E
E
T
T
© FCA – Editora de Informática 365 {
protected void Page_Load(object sender, EventArgs e) {
LabelTeste.Text = "Web Forms (1º exemplo)"; }
} }
A
A
NÁNÁLLIISSEEPara além da habitual importação de namespaces predefinidas em projetos desta
natureza, foi incluída no evento Load da página (classe Page) uma instrução que permite
definir o texto (propriedade Text) do controlo Label.
16.5
E
E
X
X
E
E
C
C
U
U
Ç
Ç
Ã
Ã
O
O
O Visual Studio deteta automaticamente todos os browsers que estão instalados no
seu dispositivo, podendo testar em diferentes softwares e dispositivos (via emulação) o
comportamento das páginas que for desenvolvendo. Assim, para executar a aplicação
ASP.NET:
1) Escolha o browser ou o emulador pretendido do conjunto de itens de teste
disponíveis (Figura 16.5).
F
FIIGGUURRAA1166..5 5––Pedido de execução
2) Deverá visualizar o conteúdo da página Default.aspx no browser/emulador
que selecionou na alínea 1 (a Figura 16.6 mostra o resultado da execução da
página no Microsoft Edge).
F
C
C
#
#
7
7
.
.
0
0
CCOOMMV
V
ISISUUAALLS
S
TUTUDDIIOO–
–
C
C
URURSSOOC
C
OMOMPPLLEETTOO© FCA – Editora de Informática 366
16.6
E
E
X
X
E
E
R
R
C
C
Í
Í
C
C
I
I
O
O
R
R
E
E
S
S
O
O
L
L
V
V
I
I
D
D
O
O
Pretende-se simular o registo simples num site, por introdução do nome e
identi-ficação do sexo de uma pessoa. Após recolha da informação numa primeira página, o botão
Submeter deverá redirecionar o utilizador para uma segunda página de boas-vindas,
conforme o esquema representado na Figura 16.7.
F
FIIGGUURRAA1166..77 ––Esquema de comunicação entre duas páginas ASP
Deverá criar um projeto no Visual Studio com o nome DadosWebForms, exatamente como fez na secção 16.2.
16.6.1
R
R
E
E
Q
Q
U
U
E
E
S
S
T
T
A primeira página (Default.aspx) vai conter os controlos necessários para a recolha
da informação e será responsável pelo envio de dados (Request) a uma segunda página, a qual
será criada na secção 16.6.2.
C
C
ÓDÓDIIGGOO(
(
D
D
EFEFAAUULLTT.
.
ASASPPXX)
)
<%@ Page Title="Request" Language="C#" AutoEventWireup="true"
CodeBehind="Default.aspx.cs" Inherits="DadosWebForms._Default" %> <html> <head runat="server"> <title>Request Page</title> </head> <body>
<form id="form1" runat="server"> <div>
<b><u><h2>
<asp:Label id="LabelIntro" runat="server"/> </b></u></h2>
<p>
<asp:Label id="LabelNome" runat="server"/> <asp:TextBox id="TextBoxNome" runat="server"/> <p>
<asp:Label id="LabelSexo" runat="server"/>
<asp:DropDownList id="DropDownListSexo" runat="server"/> <p><p>