DIÇÃO EDistribuição FCA – Editora de Informática, Lda. Av. Praia da Vitória, 14 A – 1000-247 Lisboa Edição Tel: +351 213 511 448 FCA – Editora de Informática, Lda. fca@fca.pt Av. Praia da Vitória, 14 A – 1000-247 Lisboa www.fca.pt Lidel – edições técnicas, lda
Tel: +351 213 511 448
fca@fca.pt DSEDE: ISTRIBUIÇÃO R. D. Estefânia, 183, R/C Dto., 1049-057 LISBOA 354 14 18Lda. – livrarialx@lidel.pt / Revenda: 21 351 14 43 – revenda@lidel.pt Lidelwww.fca.pt – Internet: Edições21 Técnicas, 21 351 14 48 – formacao@lidel.pt / marketing@lidel.pt Rua D.Formação/Marketing: Estefânia, 183, R/C Dto. – 1049-057 LISBOA D istribuição Ens.213 Línguas/Exportação: 21 351 14 42 – depinternacional@lidel.pt Tel: +351 511 448 Lidel – Edições Técnicas, Fax: 21 357 78 27 – 21Lda. 352 26 84 lidel@lidel.pt Rua D. Estefânia, 183, R/C Dto. – 1049-057 Lisboa www.lidel.pt
Tel: +351 213 511 448 LIVRARIAS: LISBOA: Av. Praia da Vitória, 14 – 1000-247 LISBOA – Tel.: 21 354 14 18, e-mail: livrarialx@lidel.pt lidel@lidel.pt LIVRARIA PORTO: R. Damião de Góis, 452 – 4050-224 PORTO – Tel.: 22 557 35 10, e-mail: delporto@lidel.pt www.lidel.pt
Av. Praia da Vitória, 14 – 1000-247 LISBOA Tel: +351 213 511 448 * Fax: +351 213 173 259 Livraria livraria@lidel.pt Av. Praia da Vitória, 14 A – 1000-247 Lisboa Tel: +351 213 511 448 * Fax: +351 213 522 684
Copyright © abril 2016, FCA – Editora de Informática, Lda. livraria@lidel.pt Copyright © Fevereiro 2011 ISBN: 978-972-722-830-0 Copyright © FCA – Editora FCA – Editora de2016, Informática, Lda.de Informática, Lda. 1.ª edição impressa: abril 2016
ISBN edição impressa: 978-972-722-818-8 ISBN: 978-972-722-679-5 1.ª edição impressa: agosto 2016 Paginação: Alice Simões Capa: José M. Ferrão – Look-Ahead Impressão e acabamento: A definir Paginação: Rosa Quitério Tipografia Rolo & Filhos, II – S.A. ImpressãoLegal e acabamento: Depósito N.º Aguardar Impressão e acabamento: Tipografia Lousanense, Lda. – Lousã Capa: José Manuel Reis Depósito Legal N.º ……… Depósito Legal n.º 413814/16 Ilustração da capa: Miguel Montenegro Capa: José M. Ferrão – Look-Ahead
Marcas Registadas de FCA – Editora de Informática, registadas FCA––Editora Editora de de Informática, – Marcas dedeFCA Informática,Lda. Lda. Marcas Registadas Todos
® os nossos livros passam por um rigoroso controlo de qualidade, no entanto, aconselhamos a consulta ®
®
periódica nosso site (www.fca.pt) para fazer o download de eventuais correções. Todosdo os nossos livros passam por um rigoroso controlo de qualidade, no entanto aconselhamos a consulta periódica do
Este pictograma merece uma explicação. O seu propósito é alertar o leitor para a ameaça que nosso site (www.fca.pt) para fazer o download de eventuais correções.
representa para o futuro da escrita, nomeadamente na área da edição técnica e universitária, o Não nos responsabilizamos por desatualizações das hiperligações presentes nesta obra, que foram verificadas desenvolvimento massivo da fotocópia. à data de publicação da mesma. Não nos responsabilizamos desatualizações das hiperligações nesta obra, queaforam verificadas à data de O Código dopor Direito de Autor estabelece que épresentes crime punido por lei, fotocópia sem autorização
publicação da dos mesma. proprietários do copyright. No entanto, esta prática generalizou-se sobretudo no ensino superior,
Os nomes comerciais referenciados nestesubstancial livro têm patente registada. provocando uma queda na compra de livros técnicos. Assim, num país em que a
Os nomes comerciais referenciados nesteescassa, livro têmos patente registada. literatura técnica é tão autores não sentem motivação para criar obras inéditas e fazêReservados todos os direitos. Esta publicação não pode ser de reproduzida, nem transmitida, no todo ou em parte, por qualquer -las publicar, ficando os leitores impossibilitados ter bibliografia em português. processo eletrónico, mecânico, fotocópia, digitalização, gravação, a sistema de armazenamento eoudisponibilização de Reservados todos os direitos. Esta publicação não pode ser reproduzida, nem transmitida, no todo em parte, por portanto, que é expressamente proibida reprodução, no ou todo emqualquer parte,processo da Lembramos eletrónico, mecânico, fotocópia, digitalização, gravação, sistema de armazenamento e disponibilização de informação, Web, em blogue informação,obra sítio sem Web, autorização blogue ou outros, prévia autorização escrita da Editora, exceto o permitido pelo sítio CDADC, presente dasem editora. ou outros, autorização escrita– da Editora, exceto permitido CDADC, ematravés termos do de pagamento cópia privada pela AGECOP – termos de sem cópiaprévia privada pela AGECOP Associação para aoGestão dapelo Cópia Privada, das respetivas – Associação para a Gestão da Cópia Privada, através do pagamento das respetivas taxas. taxas.
20160809 Curso Pratico C#.indd 2
09/08/16 14:57
Índice
Apresentação ..........................................................................................................................IX
Convenções ............................................................................................................................XI 1. Visual Studio e Visual C#..................................................................................................1
1.1. Visual Studio.................................................................................................................. 1
1.2. Plataforma .NET............................................................................................................ 2 1.2.1. Common Language Runtime (CLR)..................................................................... 2 1.2.2. Common Language Specification (CLS)............................................................. 3 1.3. Visual C# ....................................................................................................................... 4 1.3.1. Modelo de Programação em Visual C#............................................................... 4 1.3.1.1. Classes e Objetos..................................................................................... 5 1.3.1.2. Eventos..................................................................................................... 6 1.4. Início de uma Sessão.................................................................................................... 6 1.5. Ambiente de Programação............................................................................................ 8 1.5.1. Ambiente de Programação Console Application............................................... 10 1.5.2. Ambiente de Programação Windows Forms Application.................................. 11 1.5.2.1. Principais Elementos do Ambiente de Trabalho.................................... 12 1.5.2.2. Barra de Menus e Ferramentas............................................................. 13 1.5.2.3. Janelas IDE............................................................................................ 15 2. Noções Básicas de Programação..................................................................................19
2.1. Introdução à Lógica de Programação......................................................................... 19 2.2. Fases de Desenvolvimento de um Programa............................................................. 20 2.3. Lógica.......................................................................................................................... 21 2.4. Desenvolvimento de Algoritmos.................................................................................. 23
2.5. Sistema de Informação................................................................................................ 25 2.6. Dados........................................................................................................................... 26 2.6.1. Operadores Aritméticos, Relacionais e Lógicos................................................ 27 2.6.2. Prioridade dos Operadores............................................................................... 29
© FCA – Editora de Informática
20160809 Curso Pratico C#.indd 3
III
09/08/16 14:57
Curso Prático de C#
2.7. Sistema Binário............................................................................................................ 30 2.8. Constantes, Variáveis e Identificadores...................................................................... 32 Exercícios Resolvidos........................................................................................................ 34 3. Linguagem Algorítmica...................................................................................................39
3.1. Introdução.................................................................................................................... 39 3.1.1. Pseudocódigo..................................................................................................... 39 3.1.2. Fluxogramas....................................................................................................... 41
3.2. Estruturas de Decisão e Repetição............................................................................. 43 3.2.1. Estrutura SE....................................................................................................... 43 3.2.2. Estrutura CASO................................................................................................. 46 3.2.3. Estruturas de Repetição.................................................................................... 49 3.2.3.1. REPETIR...ATÉ...................................................................................... 49 3.2.3.2. ENQUANTO...FAZER............................................................................ 51 3.2.3.3. PARA...ATÉ...FAZER............................................................................. 52 Exercícios Resolvidos........................................................................................................ 54 4. Introdução ao C#..............................................................................................................61
4.1. Introdução.................................................................................................................... 61 4.2. Tipos de Dados e Estruturas de Controlo................................................................... 61 4.2.1. Tipos de Dados.................................................................................................. 62 4.2.2. Sequências de Escape...................................................................................... 63 4.2.3. Operadores Aritméticos, Relacionais e Lógicos em C#................................... 65 4.2.4. Declaração de Variáveis.................................................................................... 66 4.2.5. Alcance das Variáveis....................................................................................... 67 4.2.6. Atribuição de Valores a Variáveis...................................................................... 67 4.2.7. Conversão de Tipo de Dados............................................................................ 68 4.2.7.1. Typecasting............................................................................................. 70 4.2.8. Constantes ........................................................................................................ 71 4.3. Noções de Contador e de Acumulador....................................................................... 71 4.4. Entrada e Saída de Dados: Modo Consola................................................................. 72
4.5. Comentários................................................................................................................ 72 4.6. Estruturas de Controlo................................................................................................. 73 4.6.1. Estrutura IF......................................................................................................... 73 4.6.2. Estrutura IF…ELSE ........................................................................................... 74
IV
© FCA – Editora de Informática
20160809 Curso Pratico C#.indd 4
09/08/16 14:57
Índice
4.6.3. Estrutura Switch............................................................................................. 74 4.7. Estruturas de Repetição.............................................................................................. 77 4.7.1. Ciclo While........................................................................................................ 77 4.7.2. Ciclo Do…While.............................................................................................. 78 4.7.3. Ciclo FOR........................................................................................................... 78 4.7.4. Ciclo FOR EACH................................................................................................ 80 4.7.5. Estruturas Encadeadas...................................................................................... 80 4.7.6. Abandonar uma Estrutura de Controlo.............................................................. 80 4.7.7. Executar e Testar o Programa............................................................................ 81 Exercícios Resolvidos........................................................................................................ 82 5. Windows Forms................................................................................................................95
5.1. Introdução.................................................................................................................... 95
5.2. Elementos de Programação........................................................................................ 95 5.2.1. Formulário.......................................................................................................... 96 5.2.2. Controlos do Visual C#...................................................................................... 98 5.2.2.1. Botão de Comando (Button)................................................................ 102 5.2.2.2. Caixa de Verificação (CheckBox)........................................................ 103 5.2.2.3. Lista de Verificação (CheckListBox).................................................... 104 5.2.2.4. Caixa de Listagem (ComboBox).......................................................... 105 5.2.2.5. Caixa de Listagem com Calendário (DateTimePicker)....................... 106 5.2.2.6. Etiqueta ou Rótulo (Label)................................................................... 107 5.2.2.7. Etiqueta com Hiperligação (LinkLabel)................................................ 108 5.2.2.8. Lista (ListBox)...................................................................................... 108 5.2.2.9. Listagem Multifuncional (ListView)...................................................... 109 5.2.2.10. Caixa de Texto com Máscara (MaskedTextBox)................................110 5.2.2.11. Calendário (MonthCalendar)...............................................................111 5.2.2.12. Ícone de Notificação (NotifyIcon)........................................................111 5.2.2.13. Seletor Numérico (NumericUpDown).................................................112 5.2.2.14. Imagem (PictureBox)..........................................................................112 5.2.2.15. Barra de Progressão (ProgressBar)...................................................114 5.2.2.16. Botão de Seleção (RadioButton)........................................................114 5.2.2.17. Caixa de Texto com Formatação (RichTextBox).................................115 5.2.2.18. Caixa de Texto Simples (TextBox)......................................................116
© FCA – Editora de Informática
20160809 Curso Pratico C#.indd 5
V
09/08/16 14:57
Curso Prático de C#
5.2.2.19. Dica (ToolTip)......................................................................................117 5.2.2.20. Lista em Árvore (TreeView)................................................................117 5.2.2.21. Navegador Web (WebBrowser)..........................................................118 5.2.3. Propriedades e Métodos..................................................................................119 5.2.4. Eventos............................................................................................................ 120 5.3. Apresentação da Informação.................................................................................... 121 5.3.1. Classe MessageBox........................................................................................ 121 Exercícios Resolvidos...................................................................................................... 125 6. Métodos...........................................................................................................................145
6.1. Introdução.................................................................................................................. 145 6.2. Conceitos de Abstração e de “Dividir para Conquistar”............................................ 146 6.3. O que São Métodos................................................................................................... 146 6.4. Criar Novos Métodos................................................................................................. 147 6.5. Chamar os Métodos ................................................................................................. 149 6.6. Passar Argumentos para os Métodos....................................................................... 149 6.6.1. Mecanismos de Passagem de Argumentos.................................................... 150 6.6.2. Argumentos Opcionais.................................................................................... 153 6.6.3. Passar um Número Indeterminado de Argumentos........................................ 153 6.6.4. Utilizar os Nomes dos Argumentos................................................................. 156 Exercícios Resolvidos...................................................................................................... 157
7. Estruturas de Dados......................................................................................................189
7.1. Introdução.................................................................................................................. 189
7.2. Estruturas Estáticas................................................................................................... 190 7.2.1. Vetores.............................................................................................................. 190 7.2.2. Matrizes............................................................................................................ 193 7.2.3. Jagged............................................................................................................. 195 7.3. Estruturas Compostas............................................................................................... 196 7.3.1. Registos............................................................................................................ 196 7.4. Estruturas Dinâmicas................................................................................................ 197 7.4.1. Filas.................................................................................................................. 198 7.4.2. Pilhas................................................................................................................200 7.4.3. Listas Encadeadas...........................................................................................203 7.5. Classes ArrayList e List.............................................................................................206
VI
© FCA – Editora de Informática
20160809 Curso Pratico C#.indd 6
09/08/16 14:57
Índice
7.5.1. ArrayList............................................................................................................206 7.5.2. List ...................................................................................................................209 Exercícios Resolvidos...................................................................................................... 210 8. Ficheiros e Streams........................................................................................................263
8.1. Introdução.................................................................................................................. 263 8.2. Conceitos Gerais sobre Ficheiros............................................................................. 264 8.2.1. M anuseamento de Ficheiros............................................................................ 265 8.2.2. F icheiros do Tipo Binário................................................................................. 266 8.2.3. Ficheiros do Tipo Texto................................................................................... 272 8.3. Ficheiros do Tipo XML............................................................................................... 275 8.3.1. Elementos e Atributos...................................................................................... 276 8.3.2. Comentários.................................................................................................... 276 8.3.3. Criar um Ficheiro XML..................................................................................... 276 8.3.4. Ler Ficheiro XML............................................................................................. 281 8.4. Manuseamento de Pastas, Ficheiros e Caminhos.................................................... 281 8.5. Caixas de Diálogo...................................................................................................... 284 8.6. Strings........................................................................................................................ 287 8.7. Controlo RichTextBox................................................................................................290 Exercícios Resolvidos...................................................................................................... 295
9. Classes.............................................................................................................................345
9.1. Introdução..................................................................................................................345
9.2. Criar uma Classe.......................................................................................................346 9.2.1. Declarar Campos da Classe............................................................................348 9.2.2. Criar Propriedades..........................................................................................349 9.2.3. Criar um Método.............................................................................................. 351 9.2.4. Sobrecargas de Métodos................................................................................ 351 9.2.5. Construtores e Destruidores........................................................................... 352 9.3. Classes e Métodos Abstratos.................................................................................... 354 9.4. Adicionar uma Classe a um Projeto.......................................................................... 354 9.5. Conceito de Herança.................................................................................................354 9.6. Conceito de Encapsulamento.................................................................................... 355 9.7. Conceito de Polimorfismo.......................................................................................... 356 9.8. Serialização e Desserialização de Objetos............................................................... 356
© FCA – Editora de Informática
20160809 Curso Pratico C#.indd 7
VII
09/08/16 14:58
Curso Prático de C#
9.8.1. Desativar Campos............................................................................................ 359 Exercícios Resolvidos......................................................................................................360 10. Projeto............................................................................................................................405
10.1. Introdução................................................................................................................405
10.2. Descrição do Projeto...............................................................................................406 10.3. Ficheiro ...................................................................................................................406 10.4. Formulários..............................................................................................................406 Índice Remissivo....................................................................................................................411
VIII
© FCA – Editora de Informática
20160809 Curso Pratico C#.indd 8
09/08/16 14:58
Apresentação
O Visual C#, vulgarmente conhecido por C#, pertence ao pacote de desenvolvimento da Microsoft denominado Visual Studio. Sendo uma ferramenta de desenvolvimento direcionada para criação de aplicações em formulários, também disponibiliza recursos para criação de aplicações em modo consola e criação de biblioteca de classes. A interface é simples e intuitiva, possibilitando a criação de aplicações para o Windows. Por isso, é a ferramenta recomendada para os aprendizes da programação. Os leitores, ao iniciarem o percurso de aprendizagem estabelecido neste livro irão ser alvo de uma aprendizagem alicerçada num conjunto de competências essenciais. Neste processo, a que este livro deu maior ênfase, privilegiou-se a participação dos leitores num conjunto de atividades que incidem na aplicação prática e contextualizada dos conteúdos por meio de exercícios que simulam a realidade. Neste sentido, é apresentada no final de cada capítulo uma série de exercícios, orientados para um determinado objetivo e acompanhados por uma proposta de resolução para que o leitor possa comparar a sua resolução com aquela que foi apresentada. Os exercícios que são apresentados visam apenas avaliar os conhecimentos transmitidos até ao capítulo em questão. Após a conclusão de um exercício, se tiver sugestões de alterações ou uma proposta de resolução diferente, então está no caminho certo.
© FCA – Editora de Informática
20160809 Curso Pratico C#.indd 9
IX
09/08/16 14:58
20160809 Curso Pratico C#.indd 10
09/08/16 14:58
Convenções
Para poupar algum tempo na leitura e compreensão dos exercícios propostos, deverá compreender a forma como a informação é disposta neste livro. Existem algumas convenções, especialmente úteis, para quem pretende iniciar-se nestas lides da programação: 1. A resolução dos exercícios propostos que são apresentados em forma de lista numerada obriga o leitor a executá-los pela ordem em que são apresentados. 2. Na apresentação da proposta do formulário, os controlos são identificados por meio de números. Na tabela anexa ao formulário será feita a identificação do controlo e do nome a atribuir à propriedade Name.
Controlo
1
2
3
4 5
6
N.º
Tipo
Propriedade Name
1
MaskedTextBox
mtxtPais
2
MaskedTextBox
mtxtEmpresa
3
MaskedTextBox
mtxtProduto
4
Label
lblControlo
5
Button
btnGerar
6
Label
lblCodigoBarras
3. Para a atribuição do nome aos objetos é utilizada uma convenção, não normalizada, composta pela identificação do tipo de objeto seguida do nome do objeto. Vejamos o seguinte exemplo: Para o botão de comando apresentado sugere-se a atribuição do seguinte nome: btnProcurar. Em que: btn indica o tipo de controlo, neste caso Button, e Procurar a designação do objeto. 4. Na escrita do código deverá transcrever apenas as instruções do corpo do texto, não sendo necessária a escrita da primeira e da última linhas.
© FCA – Editora de Informática
20160809 Curso Pratico C#.indd 11
XI
09/08/16 14:58
20160809 Curso Pratico C#.indd 12
09/08/16 14:58
1 Visual Studio e Visual C# 1.1. Visual Studio O Visual Studio é um ambiente de desenvolvimento integrado da Microsoft. Este ambiente é orientado para o desenvolvimento de programas de computador em ambiente Windows e aplicações e serviços Web. O Visual Studio usa plataformas de desenvolvimento de software como, por exemplo, o Windows Forms, o Windows Presentation Foundation (WPF) e o Microsoft Silverlight. O Visual Studio suporta diferentes linguagens de programação tais como Visual Basic, Visual C#, Visual C++, Visual F# e JavaScript. Essas linguagens aproveitam as funcionalidades da plataforma .NET, que permite o acesso a tecnologias-chave que simplificam o desenvolvimento de aplicações desktop, Web e móveis. O ambiente de desenvolvimento disponibiliza ferramentas para a construção de formulários para os sistemas operativos Windows, assim como para o desenvolvimento de páginas Web, classes e bases de dados. O Visual Studio aceita plug-ins que adicionam novos recursos e funcionalidades ao desenvolvimento de aplicações. A Microsoft fornece edições gratuitas do Visual Studio, denominadas Community, e versões comerciais: Professional e Enterprise. Para adquirir a última versão, deverá aceder ao sítio http://www.visualstudio.com e efetuar o download de forma gratuita. Se for estudante e desejar aderir ao programa DreamSpark, pode aceder ao sítio https://www.dreamspark.com. Depois de efetuar o registo, pode fazer gratuitamente o download da versão profissional mais recente.
© FCA – Editora de Informática
20160809 Curso Pratico C#.indd 1
1
09/08/16 14:58
Curso Prático de C#
1.2. Plataforma .NET Microsoft .NET é uma iniciativa da Microsoft que visa criar uma plataforma única para o desenvolvimento e a execução de sistemas e aplicações informáticas. Todo o código criado para esta plataforma pode ser executado em qualquer dispositivo que possua um framework: a plataforma .NET (.NET Framework). O programador deixa de escrever código para um sistema ou dispositivo específico, e passa a escrever para a plataforma .NET. Esta plataforma é executada sobre um CLR (Common Language Runtime – Ambiente de Execução Independente de Linguagem) interagindo com uma coleção de bibliotecas, que juntas são o próprio framework (figura 1.1).
Figura 1.1 – Plataforma .NET
No que diz respeito ao diagrama da figura 1.1, temos: aplicações geradas pelas linguagens .NET não acedem diretamente ao hardware ou ao sistema operativo; em vez disso, utilizam os serviços disponíveis da plataforma .NET;
As
estrutura .NET consiste em dois componentes principais – o .NET Framework e o CLR. Este último controla a execução de programas, gere a memória, garante a segurança, para além de muitos outros serviços;
A
Esta estrutura possui bibliotecas com algumas centenas de classes com código prede-
finido, o que facilita a produção de aplicações informáticas.
1.2.1. Common Language Runtime (CLR) O CLR é um dos componentes da plataforma .NET, diríamos mesmo que é o coração desta tecnologia. É uma aplicação semelhante a uma máquina virtual que se encarrega de providenciar a execução das aplicações para ela escritas.
2
© FCA – Editora de Informática
20160809 Curso Pratico C#.indd 2
09/08/16 14:58
Visual Studio e Visual C#
O CLR é capaz de executar, atualmente, mais de vinte diferentes linguagens de programação, interagindo entre si como se fossem uma única linguagem. O código-fonte gerado pelo programador é então compilado pela linguagem escolhida, gerando um código intermédio numa linguagem chamada MSIL (MicroSoft Intermediate Language). Este novo código gera um ficheiro chamado Assembly, de acordo com o tipo de projeto: EXE
– ficheiros executáveis;
DLL
– biblioteca de funções;
ASPX
– página Web;
ASMX
– Web service.
No momento da execução do programa, ele é novamente compilado, desta vez pelo JIT (Just In Time compiler), de acordo com a utilização do programa. O CLR é o verdadeiro responsável pela interoperabilidade entre as linguagens suportadas pela plataforma .NET. O compilador de cada linguagem segue uma série de padrões (CLS – Common Language Specification) para compilar os seus códigos, por isso, as outras linguagens conseguem “entender” as classes e os métodos, dentro de outras informações que essa linguagem definiu. Resumidamente, podemos definir os objetivos do CLR como representado na figura 1.2:
Figura 1.2 – Objetivos do CLR
1.2.2. Common Language Specification (CLS) O CLS define o protocolo comum que os programadores têm em consideração quando estão a desenvolver componentes e aplicações para a plataforma .NET, independentemente da linguagem de programação com que estão a trabalhar. Esta vantagem permite a um programador desenvolver aplicações, inserido numa equipa multilinguagem, tendo a certeza de que não haverá problemas de integração das diferentes linguagens utilizadas. Possibilita ainda a um programador herdar classes de diferentes linguagens.
© FCA – Editora de Informática
20160809 Curso Pratico C#.indd 3
3
09/08/16 14:58
Curso Prático de C#
1.3. Visual C# Como foi referido na secção anterior, a linguagem C# (pronuncia-se “C sharp”) faz parte do conjunto de ferramentas oferecidas pelo Visual Studio. Tendo como caraterísticas principais a simplicidade e a robustez, também é uma linguagem reconhecida como altamente escalável. Fruto da criação da equipa chefiada por Anders Hejlsberg, a linguagem C# foi criada juntamente com a plataforma .NET. Embora as restantes linguagens do Visual Studio suportem essa tecnologia, o C# é considerado a linguagem símbolo dessa plataforma, uma vez que foi criada de raiz para funcionar nela. Para além desse pormenor, o compilador do C# foi o primeiro a ser desenvolvido e a maior parte das classes da plataforma .NET foi desenvolvida em C#. Sendo a linguagem C# orientada a objetos, permite aos programadores desenvolverem aplicações seguras para clientes do Windows, serviços Web XML, componentes distribuídos, aplicações de cliente-servidor, aplicações de bases de dados e muito mais. O Visual C# fornece ainda um editor de código avançado, ferramentas de construção de formulários e um depurador integrado. Sendo a sintaxe da linguagem C# similar às linguagens C, C++ ou Java, os seus utilizadores não terão qualquer dificuldade na sua aprendizagem, sendo, geralmente, capazes de desenvolver aplicações C# num tempo muito curto.
1.3.1. Modelo de Programação em Visual C# Antes de começar a aprender as técnicas de programação em Visual C#, é importante compreender alguns dos conceitos que estão por detrás da programação orientada a objetos (object-oriented programming). A programação orientada a objetos (POO) tem como principais objetivos reduzir a complexidade no desenvolvimento de software e aumentar a produtividade. O aumento da complexidade das aplicações informáticas implicou que o trabalho desenvolvido demorasse mais tempo e, por conseguinte, fosse mais caro. A análise, o projeto e a programação orientados a objetos são as respostas para o aumento da complexidade do software, que se caraterizam por sistemas heterogéneos baseados em interfaces gráficas. A POO não tem a intenção de substituir a programação estruturada tradicional. Esta é uma evolução de práticas que são recomendadas na programação estruturada, mas não formalizadas. O modelo de objetos permite a criação de bibliotecas, de forma a partilhar e reutilizar o código, reduzindo o tempo de desenvolvimento e, principalmente, simplificando o processo de manutenção das aplicações.
4
© FCA – Editora de Informática
20160809 Curso Pratico C#.indd 4
09/08/16 14:58
Visual Studio e Visual C#
A dificuldade que se coloca na POO é a diferença de abordagem do problema. Enquanto a programação estruturada tem como principal foco as ações (procedimentos e funções), a POO preocupa-se com os objetos e os seus relacionamentos. Além do conceito de objeto, a POO tem como fundamentos os conceitos de encapsulamento, classe, herança e polimorfismo, que serão desenvolvidos ao longo desta obra. 1.3.1.1. Classes e Objetos Como primeira abordagem a esta temática pretende-se esclarecer a natural confusão em relação à definição de classe e objeto. Os termos classe e objeto são às vezes usados representando a mesma coisa, mas, na verdade, classes descrevem o tipo de objetos, enquanto objetos são instâncias das classes. Dessa forma, o ato de criar um objeto é chamado de instanciação. Sendo uma classe uma unidade do sistema, esta contém informações (atributos) que pode armazenar e ações (métodos) que pode desempenhar. Ou seja, os métodos contêm as ações e as operações sobre as informações contidas nos atributos de uma classe. Os métodos podem ser entendidos como mensagens trocadas entre diferentes objetos. Assim como os atributos, os métodos também podem ser do tipo público ou privado. A figura 1.3 ilustra, de uma forma didática, os conceitos anteriormente descritos. Atributos Matrícula Proprietário Marca Modelo Cilindrada classe Mota
Métodos Acelerar Travar Virar
Objetos instanciados da classe Mota AB-45-56
CC-56-12
34-44-PM
João Miguel
Carolina Rodrigues
Pedro Capela
Honda
Yamaha
Harley-Davidson
CBR
Xmax
VRSCA
500
125
700
Figura 1.3 – Representação gráfica de uma classe e instâncias (objetos)
© FCA – Editora de Informática
20160809 Curso Pratico C#.indd 5
5
09/08/16 14:58
Curso Prático de C#
Ao longo deste livro iremos abordar alguns conceitos relacionados com a utilização das classes. No capítulo 9 serão abordados os conceitos de criação e manipulação de uma classe e a aplicação dos conceitos de polimorfismo, encapsulamento e herança. 1.3.1.2. Eventos A linguagem C#, além de orientada a objetos, também é orientada a eventos. Isto significa que enquanto atividades ocorrem, uma classe pode gerar eventos para indicar a ação que aconteceu, e passar informações relacionadas a outras classes que tenham aderido ao evento. Por exemplo, no ambiente de programação Windows Forms, quando o programador adiciona um botão de comando ao formulário, o Visual C# associa automaticamente o evento Click, correspondendo a um clique com o botão esquerdo do rato. No entanto, para este botão de comando estão previstos outros eventos, como, por exemplo, o evento para o duplo clique ou o evento para o botão direito do rato.
1.4. Início de uma Sessão Depois de ter instalado o Visual Studio, pode iniciar uma nova sessão de trabalho através do ícone do programa. Para tal, efetue um dos seguintes procedimentos: Para
o sistema operativo Windows 7:
1. Clique no botão Iniciar e, de seguida, sobre o item Todos os programas. 2. Aceda ao item Microsoft Visual Studio. 3. Clique no item Visual Studio. Para
o sistema operativo Windows 8:
1. Clique com o botão direito no Ecrã Iniciar, fora dos mosaicos. 2. Aceda à barra inferior e clique no botão Todos os Programas. 3. No ambiente apresentado deverá clicar no ícone do Visual Studio. Para
o sistema operativo Windows 8.1:
1. Aceda ao Ecrã Início. 2. Clique no botão em forma de seta localizado no canto inferior esquerdo, de forma a aceder a Todos os Programas. 3. No ambiente apresentado deverá clicar no ícone do Visual Studio.
6
© FCA – Editora de Informática
20160809 Curso Pratico C#.indd 6
09/08/16 14:58
Introdução ao C#
Exercício 12 Objetivos: Utilização das estruturas de decisão. Enunciado: Elabore um programa que receba as medidas dos lados de um triângulo. Apresente uma das seguintes mensagens: É
um triângulo escaleno (todos os lados diferentes);
É
um triângulo isósceles (dois lados iguais e um diferente);
É
um triângulo equilátero (todos os lados iguais);
Não
é um triângulo (a soma dos dois lados menores é menor que o lado maior ou um lado é menor ou igual a zero).
Resolução
static void Main(string[] args) { //Declaração das variáveis double Lado1, Lado2, Lado3; //Leituras dos lados do triângulo Console.Write("1º Lado: "); Lado1 = Double.Parse(Console.ReadLine()); Console.Write("2º Lado: "); Lado2 = Double.Parse(Console.ReadLine()); Console.Write("3º Lado: "); Lado3 = Double.Parse(Console.ReadLine());
//Definir a mensagem-padrão string textoMensagem = "Triângulo Isósceles"; //Verificar se é um triângulo válido if (Lado1 <= 0 || Lado2 <= 0 || Lado3 <= 0 || Lado1 + Lado2 <= Lado3 || Lado1 + Lado3 <= Lado2 || Lado3 + Lado2 <= Lado1)
© FCA – Editora de Informática
20160809 Curso Pratico C#.indd 87
87
09/08/16 14:58
Curso Prático de C#
{ textoMensagem = "Não é um triângulo"; } else if (Lado1 == Lado2 && Lado2 == Lado3) { textoMensagem = "Triângulo Equilátero"; } else if (Lado1 != Lado2 && Lado2 != Lado3 && Lado1 != Lado3) { textoMensagem = "Triângulo Escaleno"; } //Apresentação do resultado Console.WriteLine(textoMensagem); //Pausa no ecrã para visualizar resultado Console.ReadKey(); }
Sabemos que um triângulo é formado por três lados que possuem uma determinada medida, mas estas não podem ser escolhidas aleatoriamente como, por exemplo, os lados de um retângulo, é preciso seguir uma regra. Só irá existir um triângulo se, somente se, os seus lados obedecerem às seguintes regras: Todos
os lados forem maiores que zero;
Um
dos lados for maior que o valor absoluto da diferença dos outros dois lados e menor que a soma dos outros dois lados.
Sendo assim, e para resolver este algoritmo, partiu-se do princípio de que todos os triângulos são isósceles, ou seja, de que dois dos seus lados são iguais. Seguidamente, procedeu-se a três verificações: se é um triângulo; se sim, se é equilátero ou se é escaleno. Se nenhuma destas condições se verificar, a predefinição (isósceles) será apresentada, caso contrário será apresentada a respetiva mensagem.
88
© FCA – Editora de Informática
20160809 Curso Pratico C#.indd 88
09/08/16 14:58
10 Projeto 10.1. Introdução Neste capítulo será apresentado o projeto a desenvolver pelo leitor/formando, de forma a testar os seus conhecimentos. Considerando que ao longo deste livro se deu ênfase à componente prática do C#, é solicitado ao leitor/formando que desenvolva uma aplicação utilizando, para tal, as técnicas e os conceitos abordados nos capítulos anteriores. Neste projeto o leitor/formando será confrontado com a necessidade de interligar os conceitos, as técnicas e os paradigmas da linguagem de programação. Os requisitos do projeto, a definição de formulários e a base de dados serão apresentados ao longo deste capítulo. No entanto, o processo de desenvolvimento e a gestão do tempo para a sua consecução serão da responsabilidade do leitor/formando. Na página do livro no sítio www.fca.pt encontrará uma proposta de resolução deste projeto que poderá servir de base para o desenvolvimento do seu trabalho. Na proposta apresentada não foram contempladas todas as possibilidades de consulta para este género de programa; essas funcionalidades deverão ser alvo de análise e desenvolvimento por parte do leitor/formando. Este capítulo tem como objetivos principais: Utilizar
conceitos e técnicas apresentados no livro;
Explorar
conceitos e técnicas que não tenham sido aprofundados no livro;
Improvisar
e ultrapassar de forma autónoma os problemas específicos nas diversas fases de desenvolvimento do programa;
Fomentar
a responsabilidade e a gestão pessoal do leitor/formando. © FCA – Editora de Informática
20160809 Curso Pratico C#.indd 405
405
09/08/16 14:59
Curso Prático de C#
10.2. Descrição do Projeto A proposta para o projeto intitula-se “gestão de receitas de culinária”. Pretende-se desenvolver um sistema de informação que permita guardar e consultar receitas culinárias pessoais de uma forma simples e eficaz. O programa deverá permitir registar, editar e eliminar receitas de culinária. O registo deverá incluir o nome da receita, o tempo de preparação, o grau de dificuldade, o número de pessoas, a categoria (Carne, Peixe, Marisco, Pastelaria, Sobremesas, etc.), a descrição da preparação e os ingredientes (nome do ingrediente, quantidade e unidade de medida). Deverá incluir no programa o mecanismo de listagem dos dados inseridos, nomeadamente: Listar
todas as receitas (informação completa);
Listar
receitas por dificuldade;
Listar
receitas por categoria;
Listar
receitas por tempo de preparação.
Face ao exposto, é necessário criar um sistema que armazene todas as informações relativas à inserção e edição de receitas, assim como as consultas. O leitor/formando poderá adicionar outro tipo de consultas que considere relevantes para aperfeiçoar este programa.
10.3. Ficheiro Após a análise de necessidades feita ao sistema, chegou-se à seguinte estrutura do ficheiro XML para o registo de receitas: <?xml version=”1.0” encoding=”utf-8” standalone=”yes”?> <culinaria> <receita nome=”” tempo=”” dificuldade=”” pessoas=”” categoria=”” descrição=”” > <ingrediente nome=”” quantidade=”” medida=”” /> </receita> </culinaria>
10.4. Formulários De seguida, será apresentada uma proposta de formulários para a implementação do programa.
406
© FCA – Editora de Informática
20160809 Curso Pratico C#.indd 406
09/08/16 14:59
Projeto
O formulário Receitas de Culinária (figura 10.1) é o formulário inicial do programa e funciona como um formulário do tipo Menu, ou seja, neste o utilizador pode escolher a operação que deseja efetuar: registar novas receitas, consultar receitas e gerir receitas registadas no sistema.
Figura 10.1 – Formulário inicial do programa
Para o formulário Novas Receitas (figura 10.2), o utilizador poderá registar as novas receitas. Na construção do formulário deverá associar controlos do tipo ComboBox aos campos Dificuldade, Categoria e Medida. Desta forma, poderá personalizar as escolhas disponíveis para o preenchimento, o que facilita, por um lado, a sua introdução e, por outro, o processo de consulta.
Figura 10.2 – Formulário para o registo de novas receitas
© FCA – Editora de Informática
20160809 Curso Pratico C#.indd 407
407
09/08/16 14:59
Curso Prático de C#
Considere as seguintes opções para o preenchimento dos campos: Dificuldade
– Muito Fácil, Fácil, Moderado, Difícil, Muito Difícil;
Categoria
– Entradas, Sopa, Carne, Peixe, Marisco, Molhos e Temperos, Saladas, Pastelaria, Sobremesa;
Medidas
– Quilograma, Decigrama, Grama, Litro, Decilitro, Mililitro, Unidade.
O formulário Consultar Receitas (figura 10.3) permite aceder a todas as receitas introduzidas ou às receitas coincidentes com os critérios de filtragem.
Figura 10.3 – Formulário de consulta de receitas de culinária
Na construção do formulário deverá associar ao Campo o controlo do tipo ComboBox. Adicione, através da opção Edit Items localizada no campo superior do controlo, o seguinte conteúdo: Tempo Preparação, N.º Pessoas, Dificuldade e Categoria. O item Tempo Preparação, quando selecionado, permite apresentar todas as receitas com a duração máxima definida no controlo Valor. Quando um dos itens N.º Pessoas, Dificuldade ou Categoria for selecionado, serão apresentadas todas as receitas com o conteúdo definido no campo Valor. O formulário Gerir Receitas de Culinária (figura 10.4) permite alterar ou eliminar uma receita existente.
408
© FCA – Editora de Informática
20160809 Curso Pratico C#.indd 408
09/08/16 14:59
Projeto
Figura 10.4 – Formulário de gestão de receitas
O botão Editar, quando selecionado, permite apresentar os dados da receita nos controlos e desbloquear os botões Cancelar e Guardar. O botão Cancelar permite anular a operação em curso, enquanto o botão Guardar permite gravar no ficheiro as alterações efetuadas. O botão Eliminar, quando ativado, permite apagar a receita selecionada. Esta operação deverá ser acompanhada de um pedido de confirmação.
© FCA – Editora de Informática
20160809 Curso Pratico C#.indd 409
409
09/08/16 14:59
© FCA – Editora de Informática