PRÓLOGO... XIX COMO UTILIZAR ESTE LIVRO... XXI 1. INTRODUÇÃO... 1 1.1 Ambiente de desenvolvimento... 1 1.1.1 Iniciar o Visual Studio pela primeira vez... 2 1.1.2 Soluções e projetos... 3 1.2 Sensibilização ao sistema de ajuda... 9 1.2.1 Utilização dos recursos online... 9 1.2.2 Download e instalação da biblioteca para uso local... 10 1.3 Aplicações-consola... 10 1.4 Convenções de código... 12 1.4.1 Indentação... 12 1.4.2 Apresentação sintática... 13 1.5 Módulos de classe... 13 1.5.1 Acesso a módulos... 13 1.5.2 Criação de módulos... 13 1.5.3 Gravação de módulos... 14 1.5.4 Remoção de módulos... 14 1.6 Declaração de variáveis... 14 1.6.1 Atribuição de valores a variáveis... 15 1.6.2 Obtenção de valores contidos em variáveis... 16 1.7 Declaração de constantes... 16 1.8 Leitura de dados provenientes do utilizador... 17 1.9 Apresentação de dados ao utilizador... 18 1.10 Comentários... 19 1.11 Regras e convenções de nomenclatura... 19 1.12 Fases de desenvolvimento de um programa... 20 1.12.1 Fase I compreender o problema... 20 1.12.2 Fase II declarar variáveis e constantes... 21 1.12.3 Fase III obter dados... 21 1.12.4 Fase IV obter resultado... 22 1.12.5 Fase V apresentar resultado... 22 1.13 Exercícios propostos... 23 2. ELEMENTOS DE PROGRAMAÇÃO... 25 2.1 Tipos de dados... 25 2.1.1 Literais... 25 2.1.2 byte... 26 2.1.3 ushort... 27
VIII C# 6.0 COM VISUAL STUDIO CURSO COMPLETO 2.1.4 uint... 27 2.1.5 ulong... 27 2.1.6 sbyte... 28 2.1.7 short... 28 2.1.8 int... 28 2.1.9 long... 29 2.1.10 float... 29 2.1.11 double... 29 2.1.12 decimal... 30 2.1.13 char... 30 2.1.14 string... 30 2.1.15 bool... 31 2.2 Declaração de variáveis... 31 2.2.1 Declaração sem atribuição... 32 2.2.2 Declaração com atribuição... 32 2.2.3 Declaração múltipla... 32 2.2.4 Ciclo de vida das variáveis... 33 2.3 Tabelas... 34 2.3.1 Tabelas unidimensionais... 34 2.3.2 Tabelas multidimensionais... 35 2.4 Operadores... 36 2.4.1 Operadores aritméticos... 36 2.4.2 Operadores relacionais... 37 2.4.3 Operadores lógicos... 38 2.5 Estruturas de controlo... 38 2.5.1 Estruturas de decisão... 39 2.5.2 Estruturas de repetição... 43 2.6 Exercícios resolvidos... 47 2.6.1 Área... 47 2.6.2 Salários... 48 2.6.3 Fatorial... 50 2.7 Exercícios propostos... 51 3. PROGRAMAÇÃO ORIENTADA A OBJETOS... 53 3.1 Conceitos gerais... 53 3.2 Classes... 54 3.2.1 Atributos... 55 3.2.2 Métodos... 55 3.2.3 Instâncias... 57 3.2.4 Construtores... 58 3.2.5 Destrutores... 59 3.2.6 Estados... 61 3.2.7 Mensagens... 63 3.3 Herança... 64
IX 3.4 Polimorfismo... 67 3.4.1 Classes abstratas... 67 3.4.2 Métodos abstratos... 68 3.4.3 Herança de classes abstratas... 68 3.4.4 Implementação de métodos abstratos... 69 3.5 Interfaces... 69 3.6 Exercícios resolvidos... 70 3.6.1 Área (via classes)... 71 3.6.2 Salários (via classes)... 72 3.6.3 Fatorial (via classes)... 73 3.7 Exercícios propostos... 75 4. FUNÇÕES INTRÍNSECAS... 77 4.1 Funções matemáticas... 77 4.1.1 Função Sign... 77 4.1.2 Função Abs... 77 4.1.3 Função Round... 78 4.1.4 Funções Floor e Ceiling... 79 4.1.5 Função Sqrt... 79 4.1.6 Função Pow... 80 4.1.7 Funções Log e Log10... 80 4.1.8 Funções Sin, Asin, Cos, Acos, Tan e Atan... 81 4.2 Funções de texto... 81 4.2.1 Funções ToLower e ToUpper... 81 4.2.2 Funções TrimStart, TrimEnd e Trim... 82 4.2.3 Função SubString... 82 4.2.4 Função Replace... 83 4.2.5 Funções StartsWith, EndsWith e Contains... 83 4.2.6 Função IndexOf e LastIndexOf... 84 4.3 Funções de data e hora... 85 4.4 Funções de array... 86 4.5 Funções de formatação... 87 4.6 Exercícios resolvidos... 87 4.6.1 Pitágoras... 88 4.6.2 Contador de palavras... 89 4.6.3 Numeração romana... 90 4.7 Exercícios propostos... 94 5. USABILIDADE... 95 5.1 Interfaces... 95 5.1.1 Interface eletromecânica... 95 5.1.2 Interface de linha de comandos... 96 5.1.3 Interface gráfica... 96 5.1.4 Interface web... 97 5.1.5 Interface tátil... 98
X C# 6.0 COM VISUAL STUDIO CURSO COMPLETO 5.1.6 Interface sonora... 98 5.2 As 10 heurísticas de Nielsen... 99 5.2.1 Feedback... 100 5.2.2 Linguística... 100 5.2.3 Interrupção... 100 5.2.4 Consistência... 100 5.2.5 Prevenção... 100 5.2.6 Memorização... 101 5.2.7 Shortcuts... 101 5.2.8 Clareza... 101 5.2.9 Descomplicar... 101 5.2.10 Documentação... 101 5.3 Design de aplicações Windows... 101 5.3.1 Modos de ecrã... 102 5.3.2 Tipos de janelas... 102 5.3.3 Caixas de controlo... 103 5.3.4 Redimensionamento e mobilidade... 103 5.3.5 Barras de estado... 103 5.3.6 Zoom... 104 5.3.7 Barras de deslocamento... 104 5.3.8 Barras de notificação... 104 5.3.9 Menus e barras de ferramentas... 105 5.3.10 Barras de progresso... 105 5.3.11 Psicologia das cores... 105 5.3.12 Apresentação de texto... 107 5.3.13 Seleção de opções... 107 5.3.14 Caixas de diálogo... 108 6. WINDOWS FORMS... 109 6.1 Apresentação... 109 6.2 Criação de projetos... 109 6.3 Caixas de diálogo... 112 6.3.1 Argumento Text... 112 6.3.2 Argumento Caption... 113 6.3.3 Argumento Buttons... 113 6.3.4 Argumento Icon... 114 6.3.5 Retorno da MessageBox... 115 6.4 Controlos... 115 6.4.1 Toolbox (Caixa de Ferramentas)... 116 6.4.2 Button (botão de comando)... 118 6.4.3 CheckBox (caixa de verificação)... 118 6.4.4 CheckedListBox (caixa de listagem com caixas de verificação)... 118 6.4.5 ComboBox (caixa de combinação)... 119 6.4.6 DateTimePicker (seletor de data e hora)... 119
XI 6.4.7 Label (rótulo)... 120 6.4.8 LinkLabel (hiperligação)... 120 6.4.9 ListBox (caixa de listagem simples)... 120 6.4.10 ListView (caixa de listagem multifuncional)... 121 6.4.11 MaskedTextBox (caixa de texto com validação)... 121 6.4.12 MonthCalendar (controlo-calendário)... 122 6.4.13 NotifyIcon (ícone de notificação)... 122 6.4.14 NumericUpDown (seletor numérico)... 123 6.4.15 PictureBox (imagem)... 123 6.4.16 ProgressBar (barra de progressão)... 123 6.4.17 RadioButton (botão de opção)... 124 6.4.18 RichTextBox (caixa de texto com formatação avançada)... 124 6.4.19 TextBox (caixa de texto simples)... 124 6.4.20 ToolTip (dica)... 125 6.4.21 TreeView (lista em árvore)... 125 6.4.22 WebBrowser (navegador de páginas da Web)... 126 6.5 Convenções de nomenclatura... 126 6.6 Objeto Form... 127 6.6.1 Janela de propriedades... 127 6.6.2 Propriedade Text... 130 6.6.3 Propriedad BackgroundImage... 130 6.6.4 Propriedade BackgroundImageLayout... 133 6.6.5 Propriedade BackColor... 133 6.6.6 Propriedade Opacity... 134 6.6.7 Propriedade Icon... 135 6.6.8 Propriedade Cursor... 135 6.6.9 Propriedades Height e Width... 136 6.6.10 Propriedades Left e Top... 136 6.6.11 Propriedade StartPosition... 137 6.6.12 Propriedade WindowState... 137 6.6.13 Propriedade ControlBox... 137 6.6.14 Propriedades MaximizeBox e MinimizeBox... 138 6.6.15 Propriedade ShowIcon... 138 6.6.16 Propriedade ShowInTaskbar... 138 6.6.17 Propriedade FormBorderStyle... 139 6.6.18 Propriedade Enabled... 139 6.6.19 Método Close... 140 6.6.20 Método CenterToScreen... 140 6.6.21 Eventos Load e FormClosed... 140 6.6.22 Eventos MouseClick e MouseDoubleClick... 141 6.6.23 Eventos MouseMove e MouseHover... 142 6.6.24 Eventos MouseEnter e MouseLeave... 143 6.6.25 Eventos KeyDown e KeyUp... 143
XII C# 6.0 COM VISUAL STUDIO CURSO COMPLETO 6.6.26 Evento KeyPress... 144 6.6.27 Eventos Move e Resize... 144 6.7 Controlo Label... 145 6.7.1 Propriedade BorderStyle... 145 6.7.2 Propriedade AutoSize... 146 6.7.3 Propriedade Image... 147 6.7.4 Propriedade ImageAlign... 147 6.7.5 Propriedade TextAlign... 148 6.7.6 Propriedade ForeColor... 148 6.7.7 Propriedade Font... 148 6.7.8 Propriedade Visible... 150 6.7.9 Método Hide... 151 6.8 Controlo Button... 151 6.8.1 Propriedades TabIndex e TabStop... 151 6.8.2 Método Focus... 153 6.8.3 Eventos Enter e Leave... 153 6.9 Controlo TextBox... 154 6.9.1 Propriedade ReadOnly... 154 6.9.2 Propriedade PasswordChar... 154 6.9.3 Propriedades MultiLine, WordWrap e ScrollBars... 155 6.9.4 Propriedade MaxLength... 156 6.9.5 Método AppendText... 157 6.9.6 Método Clear... 157 6.9.7 Métodos Select, SelectAll e DeselectAll... 157 6.9.8 Evento TextChanged... 158 6.10 Controlos ComboBox e ListBox... 158 6.10.1 Propriedade Items... 159 6.10.2 Propriedade Sorted... 165 6.10.3 Propriedade DropDownStyle (apenas em ComboBox)... 166 6.10.4 Propriedade MaxDropDownItems (apenas em ComboBox)... 166 6.10.5 Evento SelectedIndexChanged... 166 6.11 Controlos CheckBox e RadioButton... 167 6.11.1 Propriedade Checked... 167 6.11.2 Propriedade CheckState (apenas em CheckBox)... 167 6.11.3 Eventos CheckedChanged e CheckStateChanged... 169 6.12 Exercícios resolvidos... 169 6.12.1 Sites... 169 6.12.2 Ficheiros... 173 6.12.3 Datas... 176 6.12.4 Formatos... 179 6.13 Exercícios propostos... 183 7. MODELAÇÃO DE DADOS... 185 7.1 Sistemas de gestão de bases de dados... 185
XIII 7.2 Estruturação de uma base de dados... 186 7.3 Normalização... 187 7.3.1 Primeira forma normal... 188 7.3.2 Segunda forma normal... 189 7.3.3 Terceira forma normal... 193 7.4 Modelo entidade-relação... 194 7.4.1 Fase I definir entidades... 195 7.4.2 Fase II definir relações... 195 7.4.3 Fase III determinar tipo de relações... 196 7.4.4 Fase IV definir atributos... 198 7.4.5 Fase V tratar relações... 199 7.5 Exercícios resolvidos... 200 7.5.1 Escola de música... 201 7.5.2 Software house... 205 7.5.3 Seguradora... 207 7.6 Exercícios propostos... 211 8. LINQ... 213 8.1 O que é a LINQ?... 213 8.2 Apresentação de um caso real... 213 8.2.1 Desenho da base de dados... 214 8.2.2 Integração com o Visual Studio... 218 8.2.3 Obtenção de listagens... 221 8.2.4 Manipulação de dados... 230 8.3 Exercícios resolvidos... 233 8.3.1 ListView... 233 8.3.2 TreeView... 235 8.3.3 DataGridView... 237 8.4 Exercícios propostos... 239 9. TAREFAS DE SISTEMA OPERATIVO... 241 9.1 Gestão do sistema de ficheiros... 241 9.1.1 Verificação de diretórios... 241 9.1.2 Criação de diretórios... 242 9.1.3 Eliminação de diretórios... 243 9.1.4 Deslocação de diretórios... 243 9.1.5 Verificação de ficheiros... 244 9.1.6 Criação de ficheiros... 245 9.1.7 Eliminação de ficheiros... 246 9.1.8 Deslocação de ficheiros... 246 9.1.9 Cópia de ficheiros... 247 9.1.10 Cópia de diretórios... 248 9.1.11 Renomeação de ficheiros... 249 9.1.12 Renomeação de diretórios... 249
XIV C# 6.0 COM VISUAL STUDIO CURSO COMPLETO 9.2 Deteção de software... 250 9.2.1 Sistema operativo... 250 9.2.2 Software instalado... 252 9.3 Deteção de hardware... 253 9.3.1 Drives... 253 9.3.2 Processador e memória... 254 9.4 Gestão de processos... 255 9.4.1 Lista de processos... 255 9.4.2 Iniciar processos... 256 9.4.3 Terminar processos... 256 9.5 Definições regionais e globalização... 257 9.6 Exercícios resolvidos... 258 9.6.1 Explorer... 258 9.6.2 Espaço em disco... 262 9.7 Exercícios propostos... 264 10. ACESSO A FICHEIROS DE TEXTO... 265 10.1 Introdução... 265 10.2 Acesso e manipulação de ficheiros... 265 10.3 Exercícios resolvidos... 270 10.3.1 Encriptação... 270 10.3.2 Descodificador... 273 10.4 Exercícios propostos... 276 11. IMPRESSÃO... 277 11.1 Sensibilização ambiental... 277 11.2 Classe PrintDocument... 278 11.3 Exercício resolvido... 278 11.4 Exercícios propostos... 285 12. INTEGRAÇÃO COM A XML... 287 12.1 Apresentação... 287 12.2 Sintaxe XML... 287 12.2.1 Declaração XML... 287 12.2.2 Elementos e atributos... 288 12.2.3 Comentários... 289 12.3 Criação de um ficheiro XML... 289 12.4 Manipulação de ficheiros XML... 290 12.5 Formatação... 303 12.6 Validação... 306 12.7 Exercícios resolvidos... 310 12.7.1 Biblioteca... 310 12.7.2 Boa formação... 312 12.7.3 Tabela... 314 12.8 Exercícios propostos... 315
XV 13. WINDOWS PRESENTATION FOUNDATION... 319 13.1 Noções gerais... 319 13.2 Criação de projetos... 319 13.3 Classe Window... 320 13.3.1 WPF Designer... 320 13.3.2 Implementação de classes em XAML... 320 13.3.3 Alteração de atributos em design-time... 321 13.3.4 Alteração de atributos em run-time... 322 13.3.5 Eventos... 323 13.3.6 Métodos... 324 13.4 Classe Grid... 324 13.5 Multimédia... 328 13.6 Exercícios resolvidos... 356 13.6.1 Audio... 356 13.6.2 Vídeo... 359 13.6.3 Banco... 362 13.7 Exercícios propostos... 365 14. DESENVOLVIMENTO PARA A WINDOWS STORE... 367 14.1 Interface de utilizador... 367 14.2 Layouts... 368 14.3 Primeira aplicação... 368 14.3.1 Criação do projeto... 368 14.3.2 Inclusão de controlos... 373 14.3.3 Adição de páginas ao projeto... 373 14.3.4 Eventos... 374 14.3.5 Navegação básica entre páginas... 375 14.4 Framing... 376 14.5 Exercícios resolvidos... 383 14.5.1 Calculadora... 383 14.5.2 Relógio... 393 14.5.3 Tempo... 396 14.6 Exercícios propostos... 399 15. DESENVOLVIMENTO PARA ANDROID... 401 15.1 Xamarin... 401 15.2 Emuladores... 401 15.3 Hello World... 402 15.4 Exercícios propostos... 404 16. INTEGRAÇÃO COM O OFFICE... 405 16.1 Introdução... 405 16.2 Integração com o Excel... 405 16.3 Integração com o Word... 418 16.4 Integração com o Powerpoint... 421
XVI C# 6.0 COM VISUAL STUDIO CURSO COMPLETO 16.5 Integração com o Access... 427 16.6 Integração com o Outlook... 431 16.7 Exercícios propostos... 433 17. PROJETO I... 435 17.1 Desenho da base de dados... 435 17.2 Preparação das ferramentas... 438 17.2.1 Criação do projeto... 438 17.2.2 Acesso à origem de dados... 438 17.2.3 Criação das classes DataContext... 439 17.2.4 Inserção de registos de teste... 439 17.3 Desenvolvimento da interface... 440 17.3.1 Preparação do formulário principal... 440 17.3.2 Criação de uma barra de ferramentas... 441 17.3.3 Criação de uma barra de estado... 442 17.3.4 Consulta de dados... 443 17.3.5 Gestão de dados... 449 17.4 Exercícios propostos... 475 18. PROJETO II... 477 18.1 Objetivo... 477 18.2 Desenho da base de dados... 478 18.3 Preparação das ferramentas... 479 18.3.1 Criação do projeto... 480 18.3.2 Acesso à origem de dados... 480 18.3.3 Inserção de registos de teste... 480 18.4 Desenvolvimento da interface... 481 18.4.1 Preparação da janela principal... 481 18.4.2 Desenho do separador RECOLHA... 481 18.4.3 Programação do separador RECOLHA... 483 18.4.4 Desenho do separador TAXA... 490 18.4.5 Programação do separador TAXA... 491 18.4.6 Desenho do separador DISTRITOS... 492 18.4.7 Programação do separador DISTRITOS... 492 18.5 Exercícios propostos... 495 19. PROJETO III... 497 19.1 Criação do projeto... 497 19.2 Importação das bandeiras... 497 19.3 Desenho da interface e programação... 498 19.4 Resultado... 509 19.5 Exercícios propostos... 510 20. PROJETO IV... 511 20.1 Objetivo... 511 20.2 Regras... 511
XVII 20.3 Desenho da interface... 513 20.3.1 Criação do projeto... 513 20.3.2 Código XAML... 513 20.4 Programação do jogo... 516 20.5 Exercícios propostos... 537 21. CONCLUSÃO... 539 21.1 Criação de programas de instalação... 539 21.2 Distribuição e comercialização de software... 541 21.3 Computação em nuvem... 542 21.4 Novos desafios... 542 A. ANEXO TABELAS AUXILIARES E COMPLEMENTOS... 543 A.1 Ambiente integrado... 543 A.1.1 Secção Environment/General (Ambiente/Geral)... 543 A.1.2 Secção Environment/Fonts and Colors (Ambiente/Fontes e Cores)... 544 A.1.3 Secção Environment/Keyboard (Ambiente/Teclado)... 544 A.1.4 Secção Projects and Solutions/General (Projetos e Soluções/Geral)... 545 A.2 Sequências de escape... 546 A.3 Máscaras de formatação... 546 A.4 Máscaras de introdução... 547 A.5 Relação de tipos de dados... 548 A.6 Códigos ASCII... 548 A.6.1 Códigos ASCII (grupo básico)... 549 A.6.2 Códigos ASCII (grupo estendido)... 550 GLOSSÁRIO DE TERMOS PORTUGUÊS EUROPEU/PORTUGUÊS DO BRASIL... 551 ÍNDICE REMISSIVO... 553