SlideShare une entreprise Scribd logo
1  sur  51
Télécharger pour lire hors ligne
APOSTILA DE PROGRAMAÇÃO EM C#
PROF. MSC. LILUYOUD CURY DE LACERDA
Programação em C#
Prof. MSc. Liluyoud Cury de Lacerda
2
CONTEÚDO
Pré-requisitos:.......................................................................................................................................................................................... 4
DVD de Acompanhamento.............................................................................................................................................................. 4
Instalação.................................................................................................................................................................................................... 5
Instalação do Servidor Web (IIS)................................................................................................................................................. 5
Instalação do .NET Framework .................................................................................................................................................... 6
Instalando o Visual Studio 2005................................................................................................................................................... 9
Instalando Componentes Adicionais........................................................................................................................................14
O Visual Studio 2005............................................................................................................................................................................15
Menu Principal...................................................................................................................................................................................16
Barra de Atalhos................................................................................................................................................................................16
Solution Explorer..............................................................................................................................................................................16
Properties Window..........................................................................................................................................................................17
ToolBox.................................................................................................................................................................................................19
Area de Trabalho ..............................................................................................................................................................................19
Start Page ........................................................................................................................................................................................20
Aplicação em modo de Design................................................................................................................................................21
Aplicação em modo de Codificação ......................................................................................................................................22
A linguagem C#.......................................................................................................................................................................................23
História da Linguagem ...................................................................................................................................................................23
Criação do Nome..........................................................................................................................................................................24
Normalização.................................................................................................................................................................................24
Política..............................................................................................................................................................................................24
Características....................................................................................................................................................................................24
Produtividade e Segurança......................................................................................................................................................25
Abraça os padrões emergentes de programação Web.................................................................................................26
Elimina erros de programação de alto custo....................................................................................................................26
Reduz os custos de desenvolvimento do dia a dia com suporte pré-construído para versioning.............26
Melhor mapeamento entre processos de negócio e implementação.....................................................................27
Interoperabilidade extensiva..................................................................................................................................................27
Bibliotecas de código..................................................................................................................................................................28
Estruturas da linguagem ....................................................................................................................................................................29
Criando uma Solução.......................................................................................................................................................................29
Criando o Programa Alo Mundo.................................................................................................................................................30
Estruturas básicas............................................................................................................................................................................33
Comentários...................................................................................................................................................................................33
Programação em C#
Prof. MSc. Liluyoud Cury de Lacerda
3
Blocos de Comando.....................................................................................................................................................................34
Variáveis e Tipos de Dados......................................................................................................................................................35
Conversão de Tipos.....................................................................................................................................................................37
Estruturas de Controle...................................................................................................................................................................41
Programação em C#
Prof. MSc. Liluyoud Cury de Lacerda
4
PRÉ-REQUISITOS:
Para o bom andamento do curso e para que o aluno possa testar os programas aqui desenvolvidos faz-
se necessário ter um mínimo de infra-estrutura computacional para se criar um ambiente de
desenvolvimento:
O computador deve estar rodando um dos seguintes Sistemas Operacionais:
 Windows 2000 com SP4
 Windows XP com o Windows Instaler 3.1
 Windows XP SP2
 Windows 2003 Server
 Windows Vista
O computador deve ter pelo menos 1.0 GHz de processador e 512Mb de RAM e 2Gb livre no Disco
Rígido.
Caso o queira instalar o SQL Server 2005 Express Edition, que é um servidor de banco de dados
poderoso e gratuito da Microsoft, recomenda-se pelo menos 1Gb RAM.
DVD DE ACOMPANHAMENTO
Para facilitar, junto a apostila é entregue um DVD com a seguinte estrutura, onde:
 Ajax é o diretório onde se encontra a
instalação do Ajax para .NET (Web 2.0).
 Apostilas é o diretório onde se encontra
algumas apostilas que envolvem .NET.
 Componentes é o diretório onde se
encontra algumas suítes de componentes
para .NET (versões Trials).
 SQL Server é o banco de dados gratuito da Microsoft que é totalmente integrado ao Visual
Studio.
 Vídeos é o diretório onde se encontra alguns tutoriais em vídeo da plataforma .NET.
 Visual Studio é o diretório onde se encontra o Ambiente de desenvolvimento para o .NET
Framework (versão trial de 180 dias).
 DotNet Framework.exe é o arquivo de instalação da a plataforma de desenvolvimento .NET.
 Visual Studio SP1.exe é o arquivo de instalação do Service Pack 1 do Visual Studio.
Programação em C#
Prof. MSc. Liluyoud Cury de Lacerda
5
INSTALAÇÃO
Para preparar um ambiente integrado de desenvolvimento completo baseado em .NET, tanto para
Windows quanto para Web, temos que seguir os seguintes passos:
 Instalação do servidor web, no caso o IIS
 Instalação do .NET Framework
 Instalação do Visual C# (com ou sem banco de dados dependendo da sua máquina)
 Instalação do Visual Web Developer
 Instalação do Visual Studio Service Pack 1
 Instalação do Ajax
 Instalação de Componentes Adicionais
INSTALAÇÃO DO SERVIDOR WEB (IIS)
O IIS (Internet Information Services) é um servidor web criado pela Microsoft para seus sistemas
operacionais possuindo um conjunto integrado de serviços de rede que permite publicar conteúdo e
disponibilizar arquivos e aplicações em ambientes Internet/Intranet/Extranet, totalmente integrado ao
sistema operacional e dotado de uma interface administrativa 100% gráfica, o IIS é uma das melhores
opções disponíveis para hospedagem de web sites, site FTP e grupos de notícias, bem como o
desenvolvimento de aplicações para Web.
Sua primeira versão foi introduzida com o Windows NT Server versão 4, e passou por várias
atualizações. As últimas versões disponíveis são:
 IIS 5.0 para Windows XP
 IIS 6.0 para Windows 2003
 IIS 7.0 para Windows Vista e 2003.
Uma de suas principais características é a geração de páginas HTML dinâmica como o ASP (Active
Server Pages) e ASPX (evolução do ASP), mas também pode usar outras tecnologias com adição de
módulos de terceiros.
Depois do lançamento da plataforma .NET em 2002 o IIS ganhou também a função de gerenciar o
ASP.NET. Este é formado basicamente por dois tipos de aplicações:
 Páginas Web: Páginas tradicionais acessadas por usuários, contém a extensão ASPX
 Web Services: Funções disponibilizadas pela rede, chamada por aplicativos ASMX
O ASP.NET é compilado antes da execução. Esta característica traz vantagens sobre as opções
interpretadas, como o ASP, JSP e o PHP.
Além de servidor web, suporta a criação e a utilização de certificados digitais com o Certificate Services,
a tecnologia de colaboração via Internet com Sharepoint Services e WebDAV, as diretivas Server-Side
Includes (SSI) e auditoria completa de visitas e uso.
Para instalar o IIS no Windows XP, devemos seguir os seguintes passos:
Programação em C#
Prof. MSc. Liluyoud Cury de Lacerda
6
1. Abra o Painel de Controle do Windows
2. Clique em Adicionar e remover programas
3. Clique em Adicionar / remover componentes
do Windows
4. Caso a opção Internet Information Services
(IIS) não esteja marcada, marque-a, e clique em
avançar. Se já estiver marcado, o IIS já está
instalado.
5. Para concluir a instalação, será pedido o CD do
Windows XP e depois de colocá-lo, o IIS será
instalado automaticamente.
INSTALAÇÃO DO .NET FRAMEWORK
Microsoft .NET é uma iniciativa da Microsoft em que visa uma plataforma única para desenvolvimento e
execução de sistemas e aplicações. Todo e qualquer código gerado para .NET, pode ser executado em
qualquer dispositivo ou plataforma que possua um framework: a "Plataforma .NET" (.NET Framework).
Com idéia semelhante à plataforma Java, o programador deixa de escrever código para um sistema ou
dispositivo específico, e passa a escrever para a plataforma .NET.
Programação em C#
Prof. MSc. Liluyoud Cury de Lacerda
7
A plataforma .NET, é executada sobre uma CLR (Common Language Runtime - Ambiente de Execução
Independente de Linguagem) interagindo com uma Coleção de Bibliotecas Unificadas, que juntas são o
próprio framework. Esta CLR é capaz de executar, atualmente, mais de vinte diferentes linguagens de
programação, interagindo entre si como se fossem uma única linguagem, entre elas podemos citar:
 APL
 Boo
 Fortran
 Pascal
 C++
 Haskell
 Perl
 C#
 Java
 Python
 COBOL
 Microsoft JScript®
 RPG
 Component Pascal
 Mercury
 Scheme
 Curriculum
 Mondrian
 SmallTalk
 Eiffel
 Oberon
 Standard ML
 Forth
 Oz
 Microsoft Visual Basic
 Delphi
 J#
 Ruby
 Lua
Esta plataforma permite a execução, construção e desenvolvimento de Web Services e Aplicações Web
de forma integrada e unificada.
A plataforma .NET se baseia em um dos principios utilizados na tecnologia Java (compiladores JIT), os
programas desenvolvidos para ela são duplo-compilados, ou seja são compilados duas vezes, uma na
distribuição e outra na execução.
Um programa é escrito em qualquer umas das linguagens de programação disponível para a plataforma,
o código fonte gerado pelo programador é então compilado pela linguagem escolhida gerando um
código intermediário em uma linguagem chamada MSIL (Microsoft Intermediate Language).
Este novo código fonte gera um arquivo chamado de Assembly, de acordo com o tipo de projeto:
 EXE - Arquivos Executáveis, Programas
 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, por exemplo:
Temos um Web Site desenvolvido em ASP.NET, ao entrar pela primeira vez em uma página o JIT irá
compilá-la, nas outras vezes que algum outro usuário acessar esta página, ele usará esta compilação.
Também é possível, através de ferramentas específicas, "pré-compilar" o código para que não se tenha o
custo da compilação JIT durante a execução.
O fato desta arquitetura utilizar a MSIL gera uma possibilidade pouco desejada entre os criadores de
software que é a de fazer a "engenharia reversa", ou seja, a partir de um código compilado, recuperar o
Programação em C#
Prof. MSc. Liluyoud Cury de Lacerda
8
código original. Isto não é uma idéia agradável para as empresas que sobrevivem da venda de softwares
produzidos nesta plataforma.
Por causa disso, existem ferramentas que "ofuscam" este código MSIL, trocando nomes de variáveis,
métodos, interfaces e etc para dificultar o trabalho de quem tentar uma engenharia reversa num código
compilado MSIL.
A versão atual do .NET Framework é a 3.0, chamado de WinFx. Esse é o framework padrão do Windows
Vista, mas pode ser instalado no Windows XP sem problemas. O WinFx foi lançado oficialmente no fim
de 2006 e as principais funcionalidades adicionadas em relação a versão 2.0 é a incorporação de 3
tecnologias base:
 Windows Communication Foundation: Permite gerenciar toda a comunicação entre os
componentes do .NET
 Windows Presentation Foundation: Permite criar uma interface do usuário bem mais rica,
com recursos 3D entre outros.
 Windows Workflow Foundation: Permite gerenciar o fluxo de informações dentro de uma
entrutura baseada em .NET
O .Net Framework 3.0 (WinFx) pode ser baixado diretamente do site da Microsoft pelo endereço:
http://www.microsoft.com/downloads/details.aspx?displaylang=pt-br&FamilyID=10CC340B-F857-4A14-83F5-25634C3BF043
ou para quem tem o DVD que acompanha a apostila, basta seguir os seguintes passos:
1. Execute o arquivo DotNet Framework.exe
localizado na pasta raiz do DVD
2. Marque a opção aceitar o contrato de licença e
clique no botão Instalar
3. Caso você dê um duplo clique no tray icon você
verá o andamento da instalação
4. Quando a instalação acabar aparecerá essa tela
de Instalação com êxito. Clique em sair.
Programação em C#
Prof. MSc. Liluyoud Cury de Lacerda
9
INSTALANDO O VISUAL STUDIO 2005
Microsoft Visual Studio 2005 é um programa desenvolvido pela Microsoft, que possibilita um ambiente
integrado de desenvolvimento (IDE). Existem várias versões do mesmo, dentre elas podemos citar:
 O Visual Studio Express que consiste em 6 produtos separados com objetivos específicos que
são o Visual Basic 2005 Express Edition, Visual C# 2005 Express Edition, Visual C++ 2005
Express Edition, Visual J# 2005 Express Edition, Visual Web Developer 2005 Express Edition, e
SQL Server 2005 Express Edition.
 O Visual Studio 2005 Professional Edition que é composto pelos 6 programas acima integrados
e mais algumas funcionalidades existente apenas na versão Professional tais como ferramentas
de Acessibilidade, Testes Automatizados e Análise, e principalmente, o suporte a add-ins e
macros de terceiros, que permitem estender a funcionalidade da IDE.
 O Visual Studio 2005 Team Edition que tem todas as funcionalidades do Professional, mas uma
extensa lista de características específicas para colaboração em equipe, gerenciamento de
projetos, ferramentas de Banco de Dados e Business Inteligence – BI, entre muitas outras
características. Nessa versão se faz necessário um servidor chamado Team Server rodando
sobre o Windows 2003 Server, juntamente com o Banco de Dados SQL Server 2005 e Sharepoint
Services 2007.
Com o Visual Studio temos a nossa disposição um ambiente especialmente dedicado ao
desenvolvimento e ao Framework .NET, baseado nas linguagens Visual Basic (VB), C++ (C Plus Plus),
C#(C Sharp) e J# (Jey Sharp), permitindo que qualquer pessoa possa criar e modificar aplicações, seja
web, móvel ou desktop.
O Visual Studio contém:
 Um editor WYSIWYG (O que você vê é o que você tem)
 Drag-and-drop (arrastar e soltar)
 Ferramenta de desenho de interfaces de usuário
 Suporte a HTML Extendido & editores de código e HTML
 Um gerenciador de banco de dados
 Suporte a outras tecnologias web, tais como CSS, Javascripte XML
 Um ambiente integrado de validação em tempo de desenho para padrões como XHTML 1.0/1.1
e CSS 2.1.
 Exemplos prontos de projetos, que no Visual Studio são chamados de Starters Kit. Junto com o
Visual Studio tem alguns, mas no site da Microsoft, você pode encontrar muitos outros projetos.
Com isso, o Visual Studio é considerado a melhor ferramenta para análise, desenho e desenvolvimento
de aplicações (projetos de desenvolvimento).
O Visual Studio 2005 Express pode ser baixado gratuitamente do site da Microsoft pelo endereço:
http://msdn.microsoft.com/vstudio/express/downloads/
ou para quem tem o DVD que acompanha a apostila, tem uma versão trial de 180 dias da versão Team
Edition do Visual Studio.
Para instalá-lo, basta seguir os seguintes passos:
Programação em C#
Prof. MSc. Liluyoud Cury de Lacerda
10
1. Dentro do diretório Visual Studio e no
subdiretório VS, execute (duplo clique) o arquivo
setup.exe.
Ao aparecer a tela a seguir, clique em Install
Visual Studio 2005.
2. Depois da descompactação dos arquivos de
instalação aparecerá a tela a seguir. Apenas clique
em Next.
3. Clique na opção I accept terms of the License
Agreement para aceitar a licença de uso da
Microsoft, e depois clique em Next.
4. Selecione a instalação personalizada
selecionando a opção Custom e depois clique em
Next.
Programação em C#
Prof. MSc. Liluyoud Cury de Lacerda
11
5. Desmarque a opção Microsoft SQL Server por 2
motivos:
 Se sua máquina tiver apenas 512 Mb RAM
ou menos, não é recomendável instalá-lo.
 Caso sua máquina tenha mais de 512 Mb,
então o recomendável é instalar a versão
full do SQL Server 2005Express que é
gratuito e pode ser baixado no site da
Microsoft, e é o mesmo que se encontra no
DVD da apostila.
6. A tela de acompanhamento da instalação será
apresentada. Pode acontecer nesse meio tempo,
ser necessário a reinicialização do Windows (vai
depender da configuração de sua máquina). Mas
ao reiniciar, a instalação continuará de onde
parou.
7. Ao final da instalação, clique em Finish.
8. Depois de instalado o Visual Studio, a tela
inicial da instalação é mostrada novamente.
Nesse caso é importante que seja instalado
também o MSDN, que é toda a documentação do
Visual Studio, suas bibliotecas, o help, exemplos,
entre outros.
Clique em Install Product Documentation para
instalar o MSDN
Programação em C#
Prof. MSc. Liluyoud Cury de Lacerda
12
9. Ao aparecer a tela de instalação do MSDN,
clique em Next.
10. Clique na opção I accept terms of the
License Agreement para aceitar a licença de uso
da Microsoft, e depois clique em Next.
11. Digite suas informações.
12. Selecione a instalação completa (Full) e clique
em Next.
Programação em C#
Prof. MSc. Liluyoud Cury de Lacerda
13
13. Escolha o diretório de instalação (pode deixar
o padrão) e clique em Next.
14. Clique em Install.
15. A instalação começa
16. Ao finalizar a instalação feche a janela.
A tela inicial da instalação é mostrada novamente,
mas desta vez basta sair (clicar em Exit), pois o
Visual Studio e sua documentação já estão
instalados.
17. É importante também instalar os service
packs para o VS. Você pode usar o Microsoft
Update para tanto, ou instalar diretamente do
DVD que acompanha a apostila.
Programação em C#
Prof. MSc. Liluyoud Cury de Lacerda
14
Na raiz do DVD, execute (duplo clique) o arquivo
Visual Studio SP1.exe.
18. Clique em OK na 2ª tela e logo depois clique
em I accept. O SP1 se auto instalará e depois
basta clicar em OK novamente ao final da
instalação.
INSTALANDO COMPONENTES ADICIONAIS
Uma das grandes vantagens da plataforma .NET é a extensa variedade de objetos complementares que
podem ser reutilizados em seus projetos de desenvolvimento. Os objetos vão desde componentes
visuais que melhoram a interface de sua aplicação, até modelos e frameworks de negócios que facilitam
o desenvolvimento de projetos complexos.
Esse tipo de modelo de extensão por meio de componentes (que já existia na época do Delphi) é um
grande aliado da plataforma, o que a distingue enormemente dos demais (a proporção de componentes
existentes para plataforma .NET em comparação a outras plataformas como Java, é maior que a
proporção de computadores com Windows Instalado versus Linux).
Os principais fornecedores (dentre muitos) desses componentes são:
 Developer Express – http://www.devexpress.com
 Component One – http://www.componentone.com
 Dundas Software – http://www.dundas.com
 Infragistics – http://www.infragistics.com
Todos eles tem uma versão demo totalmente funcional na qual podem ser utilizados em seu projeto em
fase de desenvolvimento. Lógico que ao comercializá-lo, far-se-á necessário o licenciamento do mesmo.
Existem também uma variedade de componentes gratuitos e poderosos disponíveis para download, e
quem sabe, você mesmo não crie sua suíte de componentes e disponibiliza para outros.
No DVD, na pasta Componentes, temos algumas dessas suítes de componentes que podem ser
instalados no seu computador para complementar as funcionalidades já existentes no Visual Studio. É
altamente recomendável trabalhar com eles, já que diminui muito o tempo de desenvolvimento de um
sistema e deixa o mesmo com um aspecto bem mais profissional, o que diminui substancialmente o
custo de um projeto e aumenta a qualidade do mesmo.
Para instalá-los basta executar o pacote correspondente a cada um dos componentes e seguir os passos
básicos para instalação (clicar Next, Next, Next e Install).
Programação em C#
Prof. MSc. Liluyoud Cury de Lacerda
15
O VISUAL STUDIO 2005
O Visual Studio 2005, como já foi visto, é um ambiente integrado de desenvolvimento (IDE) para a
plataforma .NET. Podemos considerá-lo também uma ferramenta RAD (Rapid Application
Development), que nos permite criar aplicações de maneira bem rápida e intuitiva, uma herança do
Delphi, já que a equipe que desenvolveu o .NET foi a mesma que outrora desenvolveu o Delphi da
Borland.
Com essa IDE podemos:
 Criar e gerenciar projetos
 Desenhar janelas , formulários e relatórios
 Criar e analisar os códigos fontes de diversas linguagens compatíveis com o .NET
 Executar e depurar aplicações para Desktop, Web, PocketPC, SmartPhone e lógico, para
ambientes corporativos
 Gerenciar banco de dados e
 Colaboração entre equipe de desenvolvimento, testes, gerentes e arquitetos de software
Para entender melhor a IDE, vamos explicá-la com detalhes:
O Visual Studio (VS) é divido em vários módulos, dentre os principais podemos citar:
Programação em C#
Prof. MSc. Liluyoud Cury de Lacerda
16
MENU PRINCIPAL
Todas as ações que o VS pode executar, é acessível pelo Menu Principal, desde a criação de um projeto,
seu acompanhamento (gerenciamento), até a sua distribuição.
Para acessar o Menu Principal, basta selecionar o item desejado com o mouse ou usar teclas de atalho
correspondentes a cada item de menu. Com a tecla Alt+[Letra sublinhada no menu], acessamos
diretamente o item menu indicado.
BARRA DE ATALHOS
As funções mais comuns do Menu Principal, tem um equivalente na Barra de Atalhos, que é uma
maneira mais fácil de ser acionada (com apenas um clique).
Nem todas as barras de atalhos estão visíveis por padrão, apenas as principais, dado um determinado
contexto (quando estamos codificando um programa as barras apresentadas podem ser diferentes
quando estamos desenhando uma janela).
Para verificar todas as barras de atalhos disponíveis e poder visualizá-las ou não, basta ir no menu
View, no item ToolBars e selecionar as Barras de Atalhos que gostaria que estivesse disponíveis.
SOLUTION EXPLORER
É o local onde gerenciamos todos nossos projetos, seus arquivos e configurações. Podemos dizer que o
Solution Explorer está para os projetos de desenvolvimento tanto quanto o Windows Explorer está para
os arquivos e recursos do Windows.
O conceito de Solution é usado pela Microsoft para definir um conjunto de projetos, seja ele de
desenvolvimento, de banco de dados, de testes ou de distribuição.
Para visualizar essa janela (caso ela não esteja visível), basta ir no menu View e selecionar Solution
Explorer, ou usar a tecla de atalho Crtl+W+S.
Programação em C#
Prof. MSc. Liluyoud Cury de Lacerda
17
Como exemplo, podemos verificar na figura que:
 temos uma Solution chamado Sistemas,
 que esses sistemas então subdivididos em Pastas
(sistemas para a Fatec, sistemas para São Lucas,
Frameworks de desenvolvimento e Projetos
comerciais),
 que cada pasta pode ser subdividida em quantas
pastas forem necessárias e
 que uma pasta pode armazenar Projetos de
Desenvolvimento e outros tipos de projetos.
Em um Projeto temos toda uma estrutura de pastas e
arquivos, só que totalmente relacionadas a aquele projeto, que
pode ser um:
 arquivo de código fonte,
 um arquivo de layout de página web,
 uma imagem,
 um arquivo de propriedades, ou
 qualquer outro tipo de arquivo que venha fazer parte
desse projeto.
Ilustrando melhor, o item marcado na figura ao lado é um
arquivo de código fonte feito em C# chamado Funcionario.cs,
que pertence ao projeto Funcionário, que está dentro de uma
pasta chamada POO, que está dentro de Fatec, que está
dentro de Faculdades e que pertence a Solution Sistemas.
PROPERTIES WINDOW
Como toda a programação .NET é baseada em Orientação a Objetos, e os objetos por definição tem
características (propriedades) e apresenta um determinado comportamento (executam ações dado uma
determinada circunstância/evento), a janela Properties Windows tem como objetivo mostrar as
propriedades de cada objeto pertencente ao Sistema e gerenciar todos os eventos na qual esse objeto
poderá responder.
Para visualizar essa janela (caso ela não esteja visível), basta ir no menu View e selecionar Properties
Window, ou usar a tecla de atalho Crtl+W+P.
Programação em C#
Prof. MSc. Liluyoud Cury de Lacerda
18
Ao trabalhar na área de design (desenho) do seu
sistema, essa janela do Visual Studio se faz de extrema
importância, dado que cada componente visual de uma
janela ou página web é na verdade um objeto, e
alterando as características e comportamento desse
objeto, podemos determinar como nossa aplicação
será tanto em termos de interface (determinado
basicamente pelas características dos objetos) quanto
em termos de funcionalidade (terminado basicamente
pelas ações que os objetos executam dado um
determinado evento).
Na janela ao lado estamos vendo as propriedades de
um objeto/componente visual. O objeto em questão se
chama Principal e é do tipo (ou classe já que falamos
de OO) DevExpress.XtraBars.Ribbon.RibbonForm. Essa
informação pode ser visualizada na parte de cima da
janela Properties.
O nome do objeto é dado pela propriedade (Name)
para programas do tipo desktop ou (ID) para
programas Web.
Percebemos também que as propriedades estão
categorizadas, como exemplo acima, a propriedade
(Name) está na categoria Design (Desenho).
Temos outras categorizações, como propriedades
específicas para aparência (Appearance),
propriedades para comportamento (Behavior), para
vinculação de dados (Data), entre muitas outras
categorias que variam de objeto para objeto.
Caso você deseje que essas propriedades fiquem em ordem alfabética em vez de categorizadas, basta
clicar em ou clicar em para voltar a ficar categorizadas.
Como foi falado anteriormente, na janela Properties também pode-se visualizar aspectos relacionados
ao comportamento do objeto. Nessa janela, mais especificamente o comportamento é definido pelos
eventos que um objeto pode tratar, e quando um desses eventos ocorre podemos relacionar uma ação a
ser executada com um desses eventos
Como exemplo pode-se imaginar no que vai acontecer (ação) quando clicarmos com o mouse
(evento) em cima dessa janela.
Para visualizar os eventos tratados por esse objeto em questão, basta clicar em , e caso deseje voltar
a visualizar as propriedades, clique em .
Programação em C#
Prof. MSc. Liluyoud Cury de Lacerda
19
TOOLBOX
O Visual Studio é considerado uma ferramenta RAD (Rapid
Application Development), que permite criar aplicações de
maneira rápida, e isso se dá em grande parte pelo uso de
componentes (objetos) das mais diversas finalidades e
totalmente funcionais.
Existem componentes para:
 Criação de interface com o usuário;
 Controle de segurança;
 Comunicação e interoperabilidade de sistemas;
 Acesso a Banco de Dados;
 Entre milhares de outros.
E a maioria deles, para ser usado, basta clicar no componente
desejado, arrastar para a sua aplicação e soltar na posição
desejada, muito simples. Depois é necessário configurar as
propriedades e eventos a serem usados para personalizar sua
aplicação.
Além disso, você pode criar seus próprios componentes, ou
modificar os já existentes para atender as suas necessidades, e
isto aumenta ainda mais o número de componentes disponíveis
(já foi falado aqui de algumas das suítes de componentes mais
famosas para desenvolvimento .NET).
Os componentes instalados na sua aplicação estão disponíveis
na janela Toolbox, e essa janela pode ser totalmente
configurada para mostrar os componentes que você mais
utiliza, podendo agrupá-los ou não de acordo com a figura ao
lado.
Para visualizar essa janela (caso ela não esteja visível), basta ir
no menu View e selecionar Toolbox, ou usar a tecla de atalho
Crtl+W+X.
Dependendo do tipo de aplicação que esteja trabalhando, seja
web, desktop ou compact, (aplicações que utilizam o .NET
Compact Framework, específico para PocketPCs e
SmartPhones/Celulares) os componentes disponibilizados (e visíveis) podem ser diferentes, já que nem
todos os componentes funcionam em todas essas plataformas. Por isso, os componentes
disponibilizados são somente aqueles que funcionariam na aplicação em que está trabalhando no
momento.
AREA DE TRABALHO
Programação em C#
Prof. MSc. Liluyoud Cury de Lacerda
20
É o local onde visualizamos e modificamos o layout de um sistema ou seu código fonte. É a parte
principal do Visual Studio, onde permite aos programadores, analistas, gerentes de projeto,
administradores de banco de dados, arquitetos de software, entre outros a interagir com o ambiente
para criar soluções em projetos de desenvolvimento de sistemas.
Na área de trabalho pode-se visualizar:
Start Page
Quando iniciamos o VS, uma Página Inicial (Start Page) é mostrada na área de trabalho. Nessa página
podemos visualizar:
 os projetos que você trabalhou ultimamente (Recent Projects),
 um tutorial (em Inglês) de uso do VS (Getting Started),
 as últimas notícias do MSDN (Microsoft Developer Network),
 entre outras informações que podem ser personalizadas.
Caso essa página não esteja disponível, clique em View, depois em Other Windows e selecione Start
Page.
Programação em C#
Prof. MSc. Liluyoud Cury de Lacerda
21
Aplicação em modo de Design
Boa parte de um projeto de desenvolvimento envolve a definição da interface com o usuário. Com o
Visual Studio, pode-se visualizar, mesmo no momento do desenvolvimento, uma interface exatamente
igual ao que será apresentada ao usuário final (tecnologia WYSIWYG – What You See Is What You Get).
Na janela acima temos muitos componentes visuais, que serão apresentados exatamente iguais ao
usuário quando o programa for executado.
Entretanto, em modo de desenvolvimento, componentes não visuais também são vistos para poderem
ser editados. É o caso do componente chamado Estilo (abaixo da figura). Componentes não visuais
estarão disponibilizados na área abaixo da janela e somente são visíveis no modo de desenvolvimento e
não em execução.
Programação em C#
Prof. MSc. Liluyoud Cury de Lacerda
22
Aplicação em modo de Codificação
Um sistema certamente tem uma lógica de programação por traz dele, codificado em uma determinada
linguagem, que no nosso caso é o C# (C Sharp).
Assim como pode-se ver uma janela em modo de desenho (exemplo anterior), pode-se visualizar todo o
código fonte por traz daquela interface, o código que representa toda a funcionalidade de sua aplicação
(nesse caso da janela).
Caso o exemplo mostrado fosse de um projeto para Web, também seria possível visualizar o código
HTML por traz de cada página Web.
Para mais detalhes assista o vídeo 01 – Apresentando o Visual
Studio que está no DVD que acompanha a apostila dentro da pasta
Vídeos.
Programação em C#
Prof. MSc. Liluyoud Cury de Lacerda
23
A LINGUAGEM C#
Nas últimas duas décadas, C e C++ foram as linguagens mais amplamente usadas para o
desenvolvimento de software comercial e de negócios. Embora as duas linguagens proporcionem ao
programador uma quantidade enorme de controle granular, esta flexibilidade possui um custo para a
produtividade. Comparadas com uma linguagem como o Microsoft® Visual Basic®, aplicações C e C++
equivalentes freqüentemente demoram mais para serem desenvolvidas. Devido a complexidade e
longos tempos de ciclo associados a essas linguagens, muitos programadores C e C++ vêm procurando
uma linguagem que ofereça um melhor balanceamento entre poder e produtividade.
Existem linguagens atualmente que aumentam a produtividade sacrificando a flexibilidade que
programadores C e C++ freqüentemente demandam. Tais soluções restringem demais o desenvolvedor
(por exemplo, omitindo um mecanismo para controle de código de baixo nível) e proporcionam
capacidades do menor denominador comum. Elas não interoperam facilmente com sistemas pré-
existentes, e nem sempre combinam bem com as práticas de programação Web atuais.
A solução ideal para programadores C e C++ seria o desenvolvimento rápido combinado ao poder de
acesso a funcionalidade total da plataforma básica. Eles desejam um ambiente totalmente sincronizado
com os padrões Web emergentes que proporcione a fácil integração com as aplicações existentes.
Adicionalmente, desenvolvedores C e C++ gostariam de ter a habilidade de codificar em baixo nível
quando e se a necessidade aparecer.
A solução Microsoft para este problema é uma linguagem chamada C#. C# é uma moderna linguagem
orientada a objeto que habilita os programadores a construir rapidamente uma ampla gama de
aplicações para a nova plataforma Microsoft .NET, a qual proporciona ferramentas e serviços que
exploram totalmente a computação e as comunicações.
Devido ao seu elegante projeto orientado a objeto, C# é uma escolha excelente para arquitetar uma
ampla gama de componentes – de objetos de negócio de alto nível a aplicações no nível do sistema.
Usando construções de linguagem C# simples, estes componentes podem ser convertidos em serviços
Web, permitindo que eles sejam invocados pela Internet, a partir de qualquer linguagem rodando em
qualquer sistema operacional.
Principalmente, C# é projetado para trazer desenvolvimento rápido para o programador C++ sem
sacrificar o poder e o controle que têm sido a característica fundamental do C e C++. Devido a esta
herança, C# possui um alto grau de fidelidade com C e C++. Desenvolvedores familiarizados com estas
linguagens podem se tornar produtivos em C# rapidamente.
HISTÓRIA DA LINGUAGEM
A linguagem C# foi criada junto com a arquitetura .NET. Embora existam várias outras linguagens que
suportam essa tecnologia (como VB.NET, C++, J#), C# é considerada a linguagem símbolo do .NET pelas
seguintes razões:
 Foi criada praticamente do zero para funcionar na nova plataforma, sem preocupações de
compatibilidade com código de legado.
 O compilador C# foi o primeiro a ser desenvolvido.
 A maior parte das classes do .NET Framework foram desenvolvidos em C#.
O criação da linguagem, embora tenha sido feita por vários desenvolvedores, é atribuída principalmente
a Anders_Hejlsberg , hoje um “Distinguished Engineer” na Microsoft. Anders Hejlsberg era
Programação em C#
Prof. MSc. Liluyoud Cury de Lacerda
24
desenvolvedor de compiladores na Borland, e entre suas criações mais conhecidas estão o Turbo Pascal
e o Delphi.
Criação do Nome
Muitos pensam que o nome C# viria de uma sobreposição de 4 símbolos "+" dando a impressão de
"++++". Na verdade o "#" de C# refere-se ao sinal musical, que aumenta um tom denotado por uma letra
(entre A e G) pela metade de um tom. O símbolo real seria o ♯ e não o #, porém, devido a limitação de
telas, fontes e alguns browsers, no momento da normalização junto a ECMA, fora especificado apenas
que o nome da linguagem seria uma letra C maiúscula (U+0043) e o sinal "#" (U+0023), facilitando
assim, publicações e artigos com um caracter encontrado facilmente dos layouts de teclado padrões.
Normalização
A Microsoft submeteu o C# a ECMA para uma padronização formal. Em Dezembro de 2001 a ECMA
liberou a especificação ECMA-334 Especificação da Linguagem C#. Em 2003 tornou-se uma padrão ISO
(ISO/IEC 23270). Há algumas implementações em desenvolvimento, destacando:
 Mono, implementação open source da Ximian.
 dotGNU e Portable.NET da Free Software Foundation.
 Delphi 2005 da Borland.
Recentemente a Microsoft anunciou planos de adicionar o suporte a tipos parciais, generics e outras
características. A padronização pela ECMA/ISO destas características foi solicitada, mas ainda não são
parte da versão padrão da linguagem.
Política
Muitos dos produtos e iniciativas da Microsoft geram polêmica no campo político e a criação e desenho
da C# não foi excepção. Devido à natureza fechada da C# com uma instituição comercial, a discussão
política continua em relação à legitimidade da sua normalização, as suas semelhanças com Java, o seu
futuro como uma linguagem para uso generalizado e outros assuntos. Alguns peritos em segurança
encontram-se cépticos em relação à eficácia do mecanismo de segurança do CLR e criticam a sua
complexidade.
Ao contrário de linguagens proprietárias tal como a Visual Basic, a Microsoft optou por submeter a C# a
um processo de normalização. No entanto, a Microsoft continua a ser a principal força a induzir
mudanças e inovação na linguagem. Além disso, a Microsoft tornou bem claro que a C#, tal como outras
linguagens .NET, é uma parte importante da sua estratégia de software, tanto para uso interno e para
consumo externo. A Microsoft leva a cabo um papel ativo em descrever a linguagem como uma
componente da sua estratégia global de negócios.
CARACTERÍSTICAS
C# (pronuncia-se "cê chárp" em português ou "cí charp" em inglês) é, de certa forma, a linguagem de
programação que mais diretamente reflete a plataforma .NET sobre a qual todos os programas .NET
executam. C# está de tal forma ligado a esta plataforma que não existe o conceito de código não-
gerenciado (unmanaged code) em C#. Suas estruturas de dados primitivas são objetos que
correspondem a tipos em .NET. A desalocação automática de memória por garbage colletor além de
Programação em C#
Prof. MSc. Liluyoud Cury de Lacerda
25
várias de suas abstrações tais como classes, interfaces, delegados e exceções são nada mais que a
exposição explicita dos recursos do ambiente .NET.
Quando comparada com C e C++, a linguagem é restrita e melhorada de várias formas incluindo:
 Ponteiros e aritmética sem checagem só podem ser utilizados em uma modalidade especial
chamada modo inseguro (unsafe mode). Normalmente os acessos a objetos é realizada através
de referências seguras, as quais não podem ser invalidadas e normalmente as operações
aritméticas são checadas contra sobrecarga (overflow).
 Objetos não são liberados explicitamente, mas através de um processo de coleta de lixo
(garbage collector) quando não há referências aos mesmos, prevenindo assim referências
inválidas.
 Destrutores não existem. O equivalente mais próximo é a interface Disposable, que juntamente
com a construção using block permitem que recursos alocados por um objeto sejam liberados
prontamente. Também existem finalizadores, mas como em Java sua execução não é imediata.
 Como em Java, só é permitida a herança simples, mas uma classe pode implementar várias
interfaces abstratas. O objetivo principal é simplificar a implementação do ambiente de
execução.
 C# é mais seguro com tipos que C++. As únicas conversões implícitas por default são conversões
seguras, tais como ampliação de inteiros e conversões de um tipo derivado para um tipo base.
Não existem conversões implícitas entre inteiros e variáveis lógicas ou enumerações. Não
existem ponteiros nulos (void pointers) (apesar de referências para Object serem parecidas). E
qualquer conversão implícita definida pelo usuário deve ser marcada explicitamente,
diferentemente dos construtores de cópia de C++.
 A sintaxe para a declaração de vetores é diferente ("int[] a = new int[5]" ao invés de "int a[5]").
 Membros de enumeração são colocados em seu próprio espaço de nomes (namespace)
 C# não possui modelos (templates), mas C# 2.0 possui genéricos (generics).
 Propriedades estão disponíveis, as quais permitem que métodos sejam chamados com a mesma
sintaxe de acesso a membros de dados.
 Recursos de reflexão completos estão disponíveis
Apesar de C# ser freqüentemente tido como similar a Java, existem uma série de diferenças
importantes, tais como:
 Java não implementa propriedades nem sobrecarga de operadores.
 Java não implementa um modo inseguro que permita a manipulação de ponteiros e aritmética
sem checagem.
 Java possui exceções checadas, enquanto exceções em C# são não checadas como em C++.
 Java não implementa o goto como estrutura de controle, mas C# sim.
 Java utiliza-se de comentários Javadoc para gerar documentação automática a partir de
arquivos fonte. C# utiliza comentários baseados em XML para este propósito.
 C# suporta indexadores e delegados.
Produtividade e Segurança
A nova economia Web – onde os concorrentes estão a apenas um clique de distância – está forçando as
empresas a responder aos desafios competitivos mais rapidamente do que nunca. Desenvolvedores são
chamados para diminuir tempos de ciclo e produzir revisões mais incrementais de um programa, ao
invés de uma única versão monumental.
Programação em C#
Prof. MSc. Liluyoud Cury de Lacerda
26
C# é projetado com estas considerações em mente. A linguagem é projetada para ajudar os
desenvolvedores a fazer mais com um número menor de linhas de código e menos oportunidades de
erro.
Abraça os padrões emergentes de programação Web
O novo modelo para desenvolvimento de aplicações significa que mais e mais soluções requerem o uso
de padrões Web emergentes tais como Hypertext Markup Language (HTML), Extensible Markup
Language (XML) e Simple Object Access Protocol (SOAP). Ferramentas de desenvolvimento existentes
foram desenvolvidas antes da Internet ou quando a Web conforme nós a conhecemos hoje estava na sua
infância. Como resultado, elas nem sempre proporcionam a melhor forma de trabalhar com as novas
tecnologias Web.
Programadores C# podem utilizar um framework extensivo para construção de aplicações na
plataforma Microsoft .NET. C# inclui suporte pré-construído para transformar qualquer componente
em um serviço Web que pode ser invocado pela Internet – a partir de qualquer aplicação rodando em
qualquer plataforma.
O que é ainda melhor, o framework dos serviços Web pode tornar os serviços Web existentes iguais a
objetos C# nativos para o programador, permitindo assim que os desenvolvedores utilizem os serviços
Web existentes com as habilidades de programação orientada a objeto que eles já possuem.
Existem mais recursos sutis que tornam o C# uma excelente ferramenta de programação Internet. Por
exemplo, o XML está emergindo como a forma padrão de passar dados estruturados pela Internet, que
freqüentemente são muito pequenos. Para performance melhorada, C# permite que os dados XML
sejam mapeados diretamente em um tipo de dados struct ao invés de uma classe. Esta é uma forma
mais eficiente de tratar pequenas quantidades de dados.
Elimina erros de programação de alto custo
Mesmo os programadores C++ mais experientes podem cometer o mais simples dos erros – esquecer de
inicializar uma variável, por exemplo – e freqüentemente estes erros simples resultam em problemas
não previstos que podem permanecer não descobertos por longos períodos de tempo. Uma vez que um
programa está em uso na produção, pode ser muito custoso corrigir mesmo o mais simples erro de
programação.
O projeto moderno do C# elimina os erros de programação C++ mais comuns. Por exemplo:
 Garbage collection libera o programador da sobrecarga do gerenciamento de memória manual.
 Variáveis no C# são inicializadas automaticamente pelo ambiente.
 Variáveis são type-safe.
O resultado final é uma linguagem que torna bem mais fácil para os desenvolvedores escrever e manter
programas que resolvem problemas de negócio complexos.
Reduz os custos de desenvolvimento do dia a dia com suporte pré-construído para versioning
Atualização de componentes de software é uma tarefa com alta probabilidade de erro. Revisões feitas
no código podem alterar não intencionalmente a semântica de um programa existente. Para auxiliar o
desenvolvedor neste problema, C# inclui o suporte a versioning na linguagem. Por exemplo, a
sobrescrita de método deve ser explícita; ela não pode acontecer de forma inadvertida como no C++ ou
Java. Isto ajuda a evitar erros de codificação e preserva flexibilidade de versioning. Um recurso
Programação em C#
Prof. MSc. Liluyoud Cury de Lacerda
27
relacionado é o suporte nativo para interfaces e herança de interface. Estes recursos habilitam
frameworks complexos a serem desenvolvidos e evoluídos com o tempo.
Em conjunto, estes recursos tornam mais robusto o processo de desenvolvimento de versões
posteriores de um projeto, reduzindo assim os custos gerais de desenvolvimento para as versões
sucessivas.
Melhor mapeamento entre processos de negócio e implementação
Com o alto nível de esforço gasto pelas corporações no planejamento de negócio, é imperativo ter um
forte conexão entre os processos abstratos de negócio e a implementação real de software. Mas a
maioria das ferramentas de linguagem não possui uma forma fácil de unir lógica de negócio ao código.
Por exemplo, os desenvolvedores provavelmente utilizam comentários de código hoje em dia para
identificar quais classes formam um objeto de negócio abstrato particular.
A linguagem C# permite metadados extensíveis typed que podem ser aplicados a qualquer objeto. Um
arquiteto de projeto pode definir atributos específicos de domínio e aplicá-los a quaisquer classes de
elemento da linguagem, interfaces e assim por diante. O desenvolvedor pode então examinar via
programação os atributos de cada elemento. Isto torna fácil, por exemplo, escrever uma ferramenta
automatizada que garantirá que cada classe ou interface está identificada corretamente como parte de
um objeto de negócio particular, ou simplesmente criar relatórios com base nos atributos específicos de
domínio de um objeto. A forte união entre os metadados customizados e o código do programa ajuda a
fortalecer a conexão entre o comportamento pretendido do programa e a implementação real.
Interoperabilidade extensiva
O ambiente type-safe gerenciado é apropriado para a maioria das aplicações corporativas. Mas a
experiência mostra que algumas aplicações continuam a exigir código "nativo", ou por razões de
performance ou para interoperar com interfaces de programação de aplicação (APIs) existentes. Estes
cenários podem forçar os desenvolvedores a usar C++ mesmo quando eles prefeririam usar um
ambiente de desenvolvimento mais produtivo.
C# endereça estes problemas da seguinte forma:
 Incluindo suporte nativo para o Component Object Model (COM) e APIs baseadas em
Windows®.
 Permitindo o uso restrito de ponteiros nativos.
Com C#, cada objeto é automaticamente um objeto COM. Desenvolvedores não têm mais que
implementar explicitamente interfaces IUnknown e outras interfaces COM. Ao invés disto, estes
recursos são pré-construídos. De forma similar, programas C# podem usar nativamente objetos COM
existentes, independente da linguagem usada para sua criação.
Para os desenvolvedores que precisam disto, C# inclui um recurso especial que habilita um programa a
chamar qualquer API nativa. Dentro de um bloco de código marcado especialmente, desenvolvedores
podem usar ponteiros e recursos C/C++ tradicionais tais como memória gerenciada manualmente e
aritmética de ponteiro. Esta é uma enorme vantagem sobre os outros ambientes. Isto significa que
programadores C# podem construir sobre sua base de código C e C++ existente, ao invés de descartá-la.
Nos dois casos – suporte a COM e acesso API nativo – a intenção é proporcionar ao desenvolvedor o
poder e o controle essenciais sem ter que deixar o ambiente C#.
Programação em C#
Prof. MSc. Liluyoud Cury de Lacerda
28
Bibliotecas de código
Ao contrário das outras linguagens de programação, nenhuma implementação de C# atualmente inclui
qualquer conjunto de bibliotecas de classes ou funções. Ao invés disso, C# está muito vinculada ao
framework .Net, do qual C# obtém suas classes ou funções de execução. O código é organizado em um
conjunto de namespaces que agrupam as classes com funções similares. Por exemplo:
 System para os tipos e estruturas básicos,
 System.Console para aplicações de entrada e saída,
 System.Drawing para gráficos,
 System.Collections para estrutura de dados e
 System.Windows.Forms para o sistema Windows Form.
 E muitas outras bibliotecas.
Um nível de organização superior é fornecido pelo conceito de montador (assembly). Um montador
pode ser um simples arquivo ou multiplos arquivos ligados que podem conter muitos namespaces ou
objetos. Programas que precisam de classes para realizar uma função em particular podem se
referenciar a montadores como System.Drawing.dll e System.Windows.Forms.dll assim como a
biblioteca core (conhecida como mscorlib.dll na implementação da Microsoft).
Programação em C#
Prof. MSc. Liluyoud Cury de Lacerda
29
ESTRUTURAS DA LINGUAGEM
Nesse capítulo, iremos introduzir a linguagem C# básica (sem uso de orientação a objeto) através de
alguns exemplos simples.
O aluno deve entender, neste momento, que C# é apenas uma outra linguagem de programação, assim
como C, Pascal, Basic, Fortran, Cobol.
Queremos ver como C# trata:
 Tipos básicos
 Constantes
 Decisões
 Laços
Veremos também como criar, compilar e executar programas usando o Visual Studio. Observe que não
veremos chamadas de sub-programas (subrotinas ou funções) aqui, este assunto é bem diferente em
C#, devido à orientação a objeto, e será visto à frente.
Importante! Você é responsável por aprender detalhes adicionais da linguagem C#. O que faremos em
aula não é uma cobertura completa da linguagem.
CRIANDO UMA SOLUÇÃO
Nas IDEs mais novas, como o Visual Studio (VS), o conceito de programa é estendido para Projeto de
Desenvolvimento, logo, para você criar um programa, deve-se primeiro, criar um Projeto que vai
agregar seu sistema.
O VS além do conceito de Projetos, tem também o conceito de Solução, que nada mais é do que um
conjunto de projetos. No exemplo que vamos dar, vamos criar uma Solução que vai levar seu nome, e
vamos dividir essa solução em 3 partes, projetos do tipo Console, do tipo Windows e do Tipo Web.
Para tanto:
1. Abra o Visual Studio
2. Selecione o menu File | New | Project
Programação em C#
Prof. MSc. Liluyoud Cury de Lacerda
30
3. Na área chamada Project Types, vá em Other
Project Types | Visual Studio Solutions e
selecione Blank Solution.
4. Na área chamada Name coloque seu nome (ou
qualquer outro nome que identifique todos os
projetos que você irá criar). No meu caso, informei
Liluyoud.
5. Na área Location, informe a pasta onde você
gostaria que seus projetos fossem criados. No meu
caso, informei C:.
6. Em cima da sua Solution, clique com o botão
direito do mouse, selecione Add | New Solution
Folder para criar uma pasta na Solução.
 Crie a pasta chamada Console para
aplicações simples e sem interface gráfica
 Crie a pasta chamada Windows para
aplicações Desktop (baseado em janelas)
 Crie a pasta chamada Web para
aplicações para Web
Apesar de termos criado 3 pastas na solução,
essa divisão é lógica apenas.
Se você verificar dentro do diretório da solução
(no nosso caso C:Liluyoud), você verá que
nenhuma pasta foi criada (particularmente acho
uma falha do VS).
7. Para que a solução represente exatamente o
seu sistema de arquivos, vá no Windows
Explorer e crie essas 3 pastas (com o mesmo
nome) dentro do diretório criado para sua
solução (no nosso caso C:Liluyoud).
CRIANDO O PROGRAMA ALO MUNDO
Programação em C#
Prof. MSc. Liluyoud Cury de Lacerda
31
Para “variar”, nosso primeiro programa será o Alo Mundo.
O objetivo principal desse programa não é mostrar a mensagem Alo Mundo para o usuário, o objetivo é
apresentar o ambiente de desenvolvimento que você usará, mostrando como se cria um programa
(projeto), assim como compilar, executar, salvar e recuperar o mesmo.
Como o objetivo dessa sessão é apenas mostrar aspectos da linguagem C#, todos os projetos que
criaremos aqui serão do tipo Console e, portanto estarão dentro da pasta Console. Um programa do
tipo Console é um programa que não apresenta interface gráfica, não contém janelas ou qualquer outro
componente visual, apenas lógica de programação.
Para criá-lo, basta seguir os seguintes passos:
1. Selecione a pasta Console
2. Clique com o botão direito do mouse em cima
da pasta Console
3. Selecione Add | New Project
4. Na área Project Types, selecione Visual C# |
Windows
5. Na área Templates, selecione Console
Application
6. Na área Name, informe o nome Alo
7. Na área Location, informe o diretório da sua
Solução com a subpasta Console (no nosso caso,
C:LiluyoudConsole).
8. Clique no botão OK para criar o projeto.
Programação em C#
Prof. MSc. Liluyoud Cury de Lacerda
32
Depois de criado o projeto, o Solution Explorer se parecerá
com a figura ao lado, onde:
 Um projeto chamado Alo foi criado dentro da pasta
Console que pertence a solução Liluyoud.
 O projeto Alo tem duas pastas chamadas
Properties e References (cujos objetivos serão
abordadas quando necessário).
 O projeto Alo tem um arquivo chamado
Program.cs que identifica um código fonte em C#
(a extensão .cs se dá devido ao C Sharp).
No conteúdo do arquivo Program.cs está definido uma classe. Agora para criar o programa Alo Mundo,
vamos digitar o código de acordo com o mostrado abaixo. As particularidades do código são mostradas
pelos balões e explicadas prontamente. Mais informações sobre essa estrutura serão abortadas
posteriormente nessa apostila.
1. A cláusula using define quais
bibliotecas de classe o programa irá
usar. Equivale a clausula imports do
Java. Dificilmente usamos, pois as
principais bibliotecas já são
importadas automaticamente.
2. A cláusula namespace define o
espaço de nomes do seu programa. É
usado para dividir logicamente os
módulos de seu sistema. Por padrão o
namespace tem o mesmo nome do
projeto, mas pode-se mudar para
atender suas especificações. Veremos
mais detalhes sobre namespaces
quando trabalharmos com uma
aplicação um pouco mais complexa.
3. Todo programa Orientado a Objetos
tem classes definidas (mais detalhes na sessão de Orientação a Objetos dessa apostila). Quando criamos
um projeto, é criada uma classe padrão chamada Program, que identifica o ponto inicial de execução de
uma aplicação (Console ou Windows). Perceba que a classe tem o mesmo nome do arquivo criado para
identificá-la, por padrão o nome é Program. Você pode renomear a classe sem problemas, mas não
esqueça de renomear o arquivo também.
4. Na classe Program temos um método (conceito a ser abordado na Orientação a Objetos) chamado
Main que identifica a primeira ação a ser executada pelo programa. Logo, se quisermos que o programa
execute alguma ação primeiramente, basta colocar os comandos dentro desse método que são
delimitados por { e }.
1
4
5
6
2
3
Programação em C#
Prof. MSc. Liluyoud Cury de Lacerda
33
Os comandos colocados dentro do métodos são dois:
5. Console.WriteLine ( ): é um comando que permite escrever qualquer informação no Console de
saída do programa, que nesse caso é o monitor por padrão. Esse comando pode nesse programa
escreverá uma palavra que é delimitada por aspas duplas, que no exemplo é “Alo Mundo!”.
6. Console.ReadLine ( ): é um comando que permite ler qualquer informação do Console de Entrada do
programa, que nesse caso é o teclado do usuário por padrão. Mas nesse programa ele é usado para
outro objetivo que é esperar o usuário digitar alguma coisa para poder finalizar o programa. Fazemos
isso nesse caso, porque senão o programa será executado tão rápido que não conseguiremos visualizar
a saída do mesmo..
ESTRUTURAS BÁSICAS
Antes de começarmos a criar algoritmos complexos, vamos conhecer algumas estruturas simples que
são usadas no C# (assim como em outras linguagens, mas com sintaxe diferente) que são:
 Comentários
 Blocos de comandos
 Variáveis e seus Tipos
 Conversão de Tipos
 Comandos de Escrita e Leitura
Comentários
Criar comentários em seu código fonte é muito importante, já que possibilita um entendimento melhor
dos algoritmos ali implementados. Os comentários na hora da compilação são ignorados, por isso você
pode usar (e não abusar) deles.
 Podemos usar comentários para:
 Identificar o responsável e data de criação daquele código
 Identificar todas as alterações feitas no código, seus responsáveis e datas de alteração
 Identificar o objetivo daquele código
 Explicar de maneira mais fácil a lógica de seu algoritmo
 Entre muitos outros, inclusive para a documentação profissional de seu código fonte através de
marcadores XML (semelhante ao mecanismo javadoc do Java).
Os tipos de comentários são:
 /* */ : Textos delimitados por essa seqüência de caracteres ficam todos comentados mesmo
que o texto contenha mais de uma linha.
 // : Texto com essa seqüência de caracteres na frente dele viram comentário de uma única linha
 /// : Texto com essa seqüência de caracteres na frente dele viram comentário para
documentação XML
Para mostrar a funcionalidade da documentação de seu código inserindo esses 3 tipos de comentários,
vamos alterar o programa Alo Mundo:
Programação em C#
Prof. MSc. Liluyoud Cury de Lacerda
34
/* Programa Alo Mundo
* Autor: Lilluyoud Cury de Lacerda
* Data de Criação: 27/03/2007
*
* Objetivo: Criar um programa para mostrar uma mensagem na tela
*/
using System;
using System.Collections.Generic;
using System.Text;
namespace Alo {
/// <summary>
/// A classe Program é uma classe criada automaticamente pelo VS e serve
/// para executar o programa a ser desenvolvido
/// </summary>
class Program {
/// <summary>
/// Método que define quais acões serão executados primeiramente
/// quando o programa for executado
/// </summary>
/// <param name="args">Um conjunto de parâmetros do tipo string que podem ser
/// passados ao programa
/// </param>
static void Main(string[] args) {
// Escreve Alo Mundo! no monitor
Console.WriteLine("Alo Mundo!");
// Espera que o usuário tecle algo para finalizar a execução do progama
Console.ReadLine();
}
}
}
Blocos de Comando
Todos os comandos em C# tem que terminar com um ponto-e-vírgula ( ; ) e esses comandos tem que
estar delimitados por um bloco que tem início e fim, representados no C# pelos caracteres abre-chaves
( { ) que define o início do bloco e fecha-chaves ( } ) que define o fim do bloco.
O namespace precisa ser delimitado com um início e fim, no caso com { e }, assim como o classe e o
método Main. Outras estruturas també precisam ser delimitadas, e que serão vistas ao longo da
apostila.
Por essa delimitação sabemos que a o método Main está dentro da classe Program que esta dentro do
namespace Alo.
Por padrão o Visual Studio fecha as chaves na mesma coluna onde ela foi aberta, mas podemos
configurar para o padrão usado no Java, onde abrimos as chaves logo após o comando que abre ela e
fechamos a mesma coluna que o comando foi iniciado, como exemplo:
Modelo padrão do C# Modelo padrão do Java
namespace Alo
{
class Program
{
static void Main(string[] args)
{
}
}
}
namespace Alo {
class Program {
static void Main(string[] args) {
}
}
}
Programação em C#
Prof. MSc. Liluyoud Cury de Lacerda
35
A endentação em ambos os casos é importantíssimo, onde um bloco de comando que esteja dentro de
outro bloco, deve estar alinhado pelo menos com 3 espaços para dentro (ou um tab como usado no VS).
Variáveis e Tipos de Dados
Uma variável consiste em um elemento ao qual lhe damos um nome e lhe atribuímos um determinado
tipo de informação, quer dizer, variáveis são estruturas que possibilitam armazenar valores e serem
modificados e recuperados a contento. As variáveis podem ser consideradas como a base da
programação.
Deste modo poderíamos escrever em uma linguagem fictícia:
a = "C# "
b = "é fácil"
A variável que nós chamamos "a" possui um elemento de informação de tipo texto que é "cachorro".
Assim como, a variável "b" contém o valor "morde". Poderíamos definir uma terceira variável que fosse
a soma destas duas:
c = a + b
Se introduzíssemos uma petição de impressão desta variável em nossa linguagem fictícia:
imprimir(c)
O resultado poderia ser:
C# é facil
Poderíamos da mesma forma trabalhar com variáveis que contivessem números:
a = 3
b = 4
c = a + b
imprimir(c)
O resultado de nosso programa seria:
7
Como podemos observar, as variáveis tem um tipo que podem ser alem de números e textos, tipos
booleanos, vetores, tipos complexos (classes na Orientação a Objetos), entre outros. Além disso,
percebe-se que valores textuais são delimitados por aspas duplas, já valores numéricos não precisam.
Em ciência da computação tipos de variáveis ou dados é um nome para uma combinação de valores e de
algumas operações que uma variável pode executar, podem variar conforme o sistema operacional e a
linguagem de programação e são utilizados para indicar ao compilador ou interpretador as conversões
necessárias para obter os valores em memória durante a construção do programa. Por outro lado,
ajudam também o programador a detectar eventuais erros.
Programação em C#
Prof. MSc. Liluyoud Cury de Lacerda
36
Dependendo da linguagem de programação o tipo de um dado é verificado diferentemente, de acordo
com a análise léxica, sintática e semântica do compilador ou interpretador da linguagem. Os tipos têm
geralmente associações com valores na memória ou com objetos (para uma linguagem orientada a
objeto) ou variáveis.
Tipos de dados primitivos são tipos que tem tamanho fixo e sempre apresentam um valor padrão, além
de serem armazenados na pilha do programa para acesso rápido. Os tipos primitivos do C# são:
Tipo Tamanho Mínimo Máximo Valor padrão
bool 1 bit - - False
char 16 bits Unicode 0 Unicode 216 - 1 u0000
byte 8 bits 0 255 0
short 16 bits -215 +215 - 1 0
int 32 bits -231 +231 -1 0
long 64 bits -263 +263 - 1 0
float 32 bits 1EEE754 1EEE754 0.0
double 64 bits 1EEE754 1EEE754 0.0
O tipo string não é primitivo pois não tem tamanho fixo e tem operações específicas associada a ela
(string é uma classe). O tipo string serve para armazenar qualquer texto no padrão Unicode.
Em C# para se declarar uma variável primeiro temos que definir o tipo para depois definir o nome da
variável e opcionalmente, iniciá-la com algum valor.
Sintaxe:
TipoDeDado nomeDdaVariável [= valorInicial];
Exemplo:
// declaração de uma variável do tipo int (inteiro) com o nome de idade
int idade;
Ou
// declaração de uma variável do tipo int (inteiro) com o nome de idade e iniciada com
// o valor 20
int idade = 20;
Caso tenhamos duas variáveis do mesmo tipo, podemos declarar as duas ao mesmo tempo, apenas
separando-as por vírgulas:
double nota1, nota2, media;
nota1 = 8;
nota2 = 7;
media = (nota1 + nota2) / 2;
Ou
double nota1 = 8, nota2 = 7, media = (nota1 + nota2) / 2;
Quanto a nomenclatura das variáveis, o padrão recomendado (não é obrigatório) é:
 Nomes de variáveis não podem abreviadas e devem fornecer um sentido completo
Certo: int quantidade; Errado: int qtd;
 Nomes de variáveis devem começar com letra minúscula, e caso o nome seja composto de duas
palavras ou mais, cada nome deve subseqüente ao primeiro deve iniciar com letra maiúscula.
Certo: string telefoneComercial; Errado: string TelefoneComercial, telefonecomercial;
Programação em C#
Prof. MSc. Liluyoud Cury de Lacerda
37
As variáveis em C# são estáticas (assim como em Java, Pascal, entre outros), isto é, não podem ter tipo
de dados modificado na sua execução (como o phyton, php etc..., que tem tipos dinâmicos).
No modelo estático, uma variável do tipo numérica em nenhum momento pode receber outro tipo de
informação a não ser tipos numéricos. Já as variáveis dinâmicas podem mudar seu tipo de informação
ao longo da execução de um programa.
Variáveis Estáticas Variáveis dinâmicas
nota = 10
...
nota = “5” // esse código da erro, como a
// variável é numérica, só pode
// atribuir valores numéricos a ela
nota = 10
...
nota = “5” // esse código não da erro, a variável
// de numérica vira textual
Outra característica importante também é a necessidade de se declarar uma variável e seu tipo
previamente (como C# e Java) ou apenas usar uma variável e deixar que o compilador atribua em modo
de execução o tipo da mesma (VBScript, PHP, Phyton, etc...). No primeiro caso damos o nome de
Linguagem Fortemente Tipada e no outro respectivamente, de Linguagem Fracamente Tipada.
Linguagem Fortemente Tipada Linguagem Fracamente Tipada
int nota
nota = 10
media = 7 // esse código da erro, pois a
// variável média não foi declarada
nota = 10
media = 7 // esse código não da erro, pois não
// é necessário declarar a variável
// previamente
A seguir temos alguns exemplos de declarações de variáveis.
char c = 'a';
char z = 'u0041'; // em unicode
int i = 10;
short s = 1;
byte b = 2;
long hexa = 0x3abe5L;
int octal = 0127;
float f = 0.32f;
double d = 12.535;
double g = .1e-23;
bool verdadeiro = true;
bool falso = false;
string palavra = "Oi pessoal";
Conversão de Tipos
Apesar do C# ser baseado em variáveis estáticas, é possível converter os tipos de dados de uma
variável, desde que essa conversão seja possível, por exemplo:
 É possível converter qualquer tipo primitivo para string mas nem sempre é possível o contrario
 Um string que representa um número pode ser convertido para um tipo numérico, caso não
represente, a conversão gerará uma exceção.
 Um numero pode sempre ser convertido para um número com mais bits, exemplo, um tipo byte
(8 bits) pode ser convertido para um do tipo int (32 bits).
 O contrário nem sempre é possível (de um tipo com mais bits para representá-lo para um com
menos bits), desde que o valor não exceda o limite do tipo menor, a conversão ocorrerá sem
problemas, senão, haverá uma exceção (erro) na execução.
Programação em C#
Prof. MSc. Liluyoud Cury de Lacerda
38
Nas conversões que sempre poderão acontecer, o mesmo é feito automaticamente, sem precisar
“forçar” nenhuma dessas conversões. Logo é possível converter sem problemas (automaticamente) os
tipos:
 De byte, short, int, long, float, double, char, bool para string
 De byte para short, de short para int, de int para float, de float para Double
Mas pode ocorrer problemas na conversão dos tipos:
 De Double para float, long para int, de int para short, de short para byte
 De uma string para um tipo numérico
Esses tipos de conversões tem que ser feita de forma explícita, e no C# existem algumas formas de se
fazer isso. A mais simples é usando a classe Convert.
Essa classe implementa vários métodos que permite a conversão de qualquer tipo para outro, desde
que essa conversão seja possível.
Por exemplo, temos:
// converte uma string que representa o valor 123 para o tipo byte
byte numero8bits = Convert.ToByte("123");
// converte uma string que representa o valor 1024 para o tipo short
short numero16bits = Convert.ToInt16("1024");
// converte uma string que representa o valor 34123 para o tipo int
int numero32bits = Convert.ToInt32("34123");
// converte uma string que representa o valor 123123.12455 para o tipo double
double numeroReal64bits = Convert.ToDouble("123123.12455");
// converte o número 123 para uma string
string palavra1 = Convert.ToString(123);
// outra maneira de converter o número 123 para uma string
string palavra2 = 123.ToString();
Comandos de Escrita e Leitura
Como vamos trabalhar primeiramente com programas não visuais, isto é, aplicações do tipo Console, é
importante aprendermos uma maneira de ler informações do usuário e também enviar.
Para tanto, o C# implementa alguns métodos dentro da classe Console que faz parte do espaço de
nomes (namespace) chamado System.
Para escrever alguma informação na tela podemos usar esses dois comandos:
Console.WriteLine( informação );
Console.Write( informação );
Onde
 WriteLine é usado para escrever um dado e pular uma linha
 Write é usado para escrever um dado e não pular uma linha
 Informação é qualquer valor, sejam valores numéricos, textos ou uma concatenação entre eles.
Programação em C#
Prof. MSc. Liluyoud Cury de Lacerda
39
Para ler alguma informação do usuário, podemos usar o comando:
variável = Console.ReadLine();
Onde
 Variável pode ser de qualquer tipo
 ReadLine lê uma informação do usuário e essa informação sempre é do tipo string, caso queira
mudar o tipo, é necessário usar o Convert.
Exemplo
Para explicar melhor o conceito de variáveis, leitura e escrita, vamos implementar um projeto cujo
objetivo é ler o nome de um aluno, ler as notas de duas provas e depois mostrar o nome é a média do
aluno:
1. Abra o Visual Studio 2005
2. Na área Recent Projects selecione a solução que você criou
no exercício anterior (no nosso caso é a Solução Liluyoud)
3. Ao abrir sua solução, selecione a
pasta Console
4. Com o botão direito do mouse, clique
em cima da pasta e selecione o item de
menu Add | New Project...
Programação em C#
Prof. MSc. Liluyoud Cury de Lacerda
40
5. Assim como no projeto anterior, selecione
na área de Templates o tipo Console
Application.
6. Na área Name informe o nome do projeto
que será Estruturas Básicas.
7. Na área Location informe o local onde
você deseja armazenar seu novo projeto,
que é o local onde sua solução foi criada e
dentro da pasta Console ( no nosso caso
seria C:LiluyoudConsole ).
Agora a pasta Console da nossa Solução contem dois
projetos, o Alo e o Estruturas Básicas.
Entretanto em uma solução, apenas um projeto pode
estar ativo, e que no caso, é o projeto anterior ( o Alo).
O projeto ativo é o projeto que será iniciado quando você
quiser compilar e executar um programa.
Como vamos trabalhar com o projeto recém criado, para
mudar o projeto ativo da solução, precisamos:
8. Selecione o projeto que deseja ser o ativo (padrão)
9. Com o botão direito do mouse, clique no projeto e
selecione a opção Set as StartUp Project.
Pronto, agora seu novo projeto será compilado e
executado.
Agora precisamos apenas implementar um
algoritmo que resolva o problema proposto.
Esse algoritmo, por enquanto, tem que estar
definido dentro do método Main.
A seguir temos um modelo de solução para o
problema.
Programação em C#
Prof. MSc. Liluyoud Cury de Lacerda
41
using System;
using System.Collections.Generic;
using System.Text;
namespace Basico {
class Program {
static void Main(string[] args) {
// declaração das variáveis
string aluno;
double nota1, nota2;
// lendo as informações do usuário
Console.Write("Informe o nome do Aluno: ");
aluno = Console.ReadLine();
Console.Write("Informe a 1a nota: ");
nota1 = Convert.ToDouble(Console.ReadLine());
Console.Write("Informe a 2a nota: ");
nota2 = Convert.ToDouble(Console.ReadLine());
// fazendo os cálculos
double media = (nota1 + nota2) / 2;
// criando uma saida com o resultado
Console.WriteLine("-----------------------");
Console.WriteLine("O aluno {0} tirou as notas {1} e {2}",
aluno, nota1, nota2);
Console.WriteLine("Sua média é {0}", media);
// esperando o usuário clicar para sair do programa
Console.ReadLine();
}
}
}
ESTRUTURAS DE DECISÃO
O C# assim como outras linguagens apresentam diversas estruturas que controla a execução (fluxo e
comportamento) de um programa. Dentre elas podemos citar as estruturas de decisão permitem que
Programação em C#
Prof. MSc. Liluyoud Cury de Lacerda
42
escolhamos qual parte do código será executado dado uma expressão booleana (que pode ter como
resultado, apenas dois valores: verdadeiro ou falso).
if – else if - else
Um exemplo de estrutura de decisão é a estrutura IF (SE), que serve para mudar o fluxo da execução de
um programa dado uma expressão booleana. A maioria dos programas tomam decisões que afetam seu
fluxo. As declarações que tomam essas decisões são chamadas de declarações de controle.
Sintaxes:
if sem chaves if com chaves
if (expressao booleana)
comando;
Obs: Usando quando temos apenas um comando
fazendo parte do if
if (expressao booleana) {
comando 1;
comando 2;
...
comando n;
}
Obs: Usando quando temos vários comandos fazendo
parte do if
if - else sem chaves if com chaves
if (expressao booleana)
comando1;
else
comando2;
Obs: onde comando1 será somente executado se a
expressão booleana for verdadeiro, e caso for
falso será executado o comando2
if (expressao booleana) {
comandos bloco 1;
...
} else {
comandos bloco 2;
...
}
Obs: onde os comandos do bloco 1 serão somente
executados se a expressão booleana for
verdadeiro, e caso for falso será executado os
comandos do bloco 2
if – else if – else
if (expressao booleana 1) {
comandos bloco 1;
...
} else if (expressao booleana 2){
comandos bloco 2;
...
} else if ... {
...
} else if (expressao booleana n){
comandos bloco n;
...
} else {
comandos bloco else;
...
}
Onde:
Os comandos do bloco 1 serão somente executados
se a expressão booleana 1 for verdadeira;
Os comandos do bloco 2 serão somente executados
se a expressão booleana 2 for verdadeira;
Os comandos do bloco n serão somente executados
se a expressão booleana n for verdadeira;
Os comandos do bloco else serão somente
executados se nenhuma expressão booelana anterior
for verdadeira.
O uso de chaves é obrigatório quando se quer que mais de um comando seja executado quando uma
expressão é verdadeira ou não. Caso o fluxo seja direcionado para apenas um comando, a chaves não se
faz necessária. As chaves delimitam blocos de comando, similiar ao Inicio...Fim usando nos algorítimos.
Programação em C#
Prof. MSc. Liluyoud Cury de Lacerda
43
switch
O comando switch existe nas principais linguagens de programação (C, C++, Java, C#). Seu propósito é
permitir que o valor de uma variável ou expressão controle o fluxo de execução do programa.
Sintaxe:
O comando deve começar com a palavra reservada switch, e cada bloco de execução deve conter a
palavra reservada case acompanhada do valor que a variável de controle deve ter. Para finalizar o
bloco, devemos usar o comando break.
Switch
switch ( expressão ) {
case valor1:
comandos;
break;
case valor2:
comandos;
break;
...
case valorN:
comandos;
break;
default:
comandos;
break;
}
Onde:
Os comandos relacionados ao case valor1 serão
somente executados se o valor da expressão for
igual ao valor1;
Os comandos relacionados ao case valor2 serão
somente executados se o valor da expressão for
igual ao valor2;
Os comandos relacionados ao case valorN serão
somente executados se o valor da expressão for
igual ao valorN;
Os comandos do bloco default serão somente
executados se nenhuma expressão tiver um valor
definido na estrutura case.
Exemplo
Para explicar melhor o conceito de estruturas de decisão, vamos implementar um programa cujo
objetivo é similar ao exercício anterior, sendo que este irá mostrar se o aluno passou por média (média
maior ou igual a 6), vai pra final ou reprovou de vez (média menor que 3).
Para os alunos que passaram por média, o programa ainda definirá um conceito para aquele aluno:
 A+ para média 10
 A para média 9
 para média 8
 B para média 7
1. Abra o Visual Studio 2005
2. Na área Recent Projects selecione a solução que você criou
no exercício anterior (no nosso caso é a Solução Liluyoud)
Programação em C#
Prof. MSc. Liluyoud Cury de Lacerda
44
3. Ao abrir sua solução, selecione a
pasta Console
4. Com o botão direito do mouse, clique
em cima da pasta e selecione o item de
menu Add | New Project...
5. Assim como no projeto anterior, selecione
na área de Templates o tipo Console
Application.
6. Na área Name informe o nome do projeto
que será Estruturas de Decisão.
7. Na área Location informe o local onde
você deseja armazenar seu novo projeto,
que é o local onde sua solução foi criada e
dentro da pasta Console ( no nosso caso
seria C:LiluyoudConsole ).
Não se esquecendo de colocar o projeto
atual como projeto padrão (Set as Startup
Project, visto no exemplo anterior).
Agora precisamos apenas implementar um
algoritmo que resolva o problema proposto.
Esse algoritmo, por enquanto, tem que estar
definido dentro do método Main.
A seguir temos um modelo de solução para o
problema.
using System;
using System.Collections.Generic;
using System.Text;
namespace Decisao {
class Program {
Programação em C#
Prof. MSc. Liluyoud Cury de Lacerda
45
static void Main(string[] args) {
// declaração das variáveis
string aluno;
double nota1, nota2;
// lendo as informações do usuário
Console.Write("Informe o nome do Aluno: ");
aluno = Console.ReadLine();
Console.Write("Informe a 1a nota: ");
nota1 = Convert.ToDouble(Console.ReadLine());
Console.Write("Informe a 2a nota: ");
nota2 = Convert.ToDouble(Console.ReadLine());
// fazendo os cálculos
double media = (nota1 + nota2) / 2;
// verificando a situação do aluno
if (media >= 6) {
Console.Write("Aluno Aprovado ");
// para trabalhar com switch precisamos usar numeros inteiros
// e por isso arredondamos a varíavel média
int conceito = (Int32)Math.Round(media);
switch (conceito) {
case 10: Console.WriteLine("com conceito A+");
break;
case 9: Console.WriteLine("com conceito A+");
break;
case 8: Console.WriteLine("com conceito A+");
break;
default: Console.WriteLine("com conceito satisfatório");
break;
}
} else if (media >= 3) {
Console.WriteLine("Aluno para Prova Final");
} else {
Console.WriteLine("Aluno Reprovado");
}
// esperando o usuário clicar para sair do programa
Console.ReadLine();
}
}
}
Como exemplo, temos a seguinte
saída de execução do programa:
ESTRUTURAS DE REPETIÇÃO
Programação em C#
Prof. MSc. Liluyoud Cury de Lacerda
46
O C# assim como outras linguagens apresentam diversas estruturas que permitem a execução de um
comando ou um bloco de comandos mais de uma vez (ou nenhuma em alguns casos), controlando o
fluxo de execução de um programa.
Esse fluxo de execução é controlado por uma expressão booleana, por isso, uma estrutura de repetição é
normalmente é composto por essa expressão mais um comando ou um bloco de comandos. No caso, a
expressão booleana - chamada de expressão de controle ou condição de parada - será avaliada e, se for
verdadeira, o comando será executado, caso contrário, o fluxo de repetição será parado.
Deve-se observar que, caso o comando - ou bloco de comandos - executado dentro de uma estrutura de
repetição não altere nenhum dos elementos da expressão de controle, a repetição será infinita.
Não é incomum especificar-se, como expressão de controle do, uma expressão que sempre seja
verdadeira, tornando a repetição infinita um efeito desejado. Nesses casos, ou há uma outra estrutura
de controle dentro dos comandos a serem repetidos que terminará o laço de repetição - tal como um
comando break - ou o programa controla um conjunto de ações que realmente deverá ser executado
ininterruptamente - como um sistema operacional ou um programa de controle de um dispositivo
portátil, por exemplo.
Existem 3 tipos clássicos de estruturas de repetição descritos a seguir:
for
No comando for, podemos dizer que o(s) comando(s) será(ao) executado(s) por uma quantidade pré-
definida de vezes, utilizando-se pra isso, um contador interno, inicializado previamente, que será
modificado a cada iteração do comando for.
A execução da estrutura for então está vinculada a esse contados, executando o(s) comandos enquanto
a expressão booleana, que envolve o contador, for verdadeiro, ou parando a execução caso ele seja falso.
Sintaxe:
for
for (VI; CP; INC)
comando;
ou
for (VI; CP; INC) {
comandos;
}
Onde:
VI é nde o contador é iniciado com um Valor
Inicial;
CP é Condição de Parada que nada mais é do que
uma expressão booleana (ou expressão de controle)
que envolve o contador iniciado e que controlará
a execução ou não dos comandos;
INC é o local onde o contador é modificado, pode
ser INCrementado ou diminuído ao longo das
iterações do comando for.
while
No comando while, podemos dizer que o(s) comando(s) será(ao) executado(s) enquanto a expressão
for verdadeira - daí derivando o nome do comando while. O fato de a expressão ser avaliada antes de o
comando ser executado caracteriza o comando while como sendo um repetitivo pré-testado,
diferenciando-o de comandos repetitivos pós-testados, tais como o do-while.
Como o while é uma estrutura de repetição pré-testado, pode acontecer que os comandos definidos no
bloco de comandos possam não ser executados.
Programação em C#
Prof. MSc. Liluyoud Cury de Lacerda
47
Sintaxe:
while
while (CP)
comando;
ou
while (CP) {
comandos;
}
Onde:
CP é Condição de Parada que nada mais é do que
uma expressão booleana (ou expressão de controle)
que controlará a execução ou não dos comandos da
estrutura while;
do... while
No comando do...while, podemos dizer que o(s) comando(s) será(ao) executado(s) enquanto a
expressão for verdadeira - daí derivando o nome do comando while. O fato de a expressão ser avaliada
depois de o comando ser executado (usando-se o comando do – faça - antes do while) caracteriza o
comando como sendo um repetitivo pós-testado, onde sempre pelo menos uma vez os comandos
definidos no bloco de comandos serão executados.
Sintaxe:
do...while
do
comando;
while (CP)
ou
do {
comandos;
} while (CP)
Onde:
CP é Condição de Parada que nada mais é do que
uma expressão booleana (ou expressão de controle)
que controlará a execução ou não dos comandos da
estrutura do...while;
Exemplo
Para explicar melhor o conceito de estruturas de repetição, vamos implementar um programa cujo
objetivo é criar um menu de execução que sempre será mostrado enquanto o usuário não digitar 0.
Caso ele digitar 1 o programa deverá mostrar a tabuada de 1 a 9 e caso ele digite 2, o programa
mostrará a soma de todos esses números da tabuada.
Programação em C#
Prof. MSc. Liluyoud Cury de Lacerda
48
1. Abra o Visual Studio 2005
2. Na área Recent Projects selecione a solução que você criou
no exercício anterior (no nosso caso é a Solução Liluyoud)
3. Ao abrir sua solução, selecione a
pasta Console
4. Com o botão direito do mouse, clique
em cima da pasta e selecione o item de
menu Add | New Project...
5. Assim como no projeto anterior, selecione
na área de Templates o tipo Console
Application.
6. Na área Name informe o nome do projeto
que será Estruturas de Decisão.
7. Na área Location informe o local onde
você deseja armazenar seu novo projeto,
que é o local onde sua solução foi criada e
dentro da pasta Console ( no nosso caso
seria C:LiluyoudConsole ).
Programação em C#
Prof. MSc. Liluyoud Cury de Lacerda
49
Não se esquecendo de colocar o projeto
atual como projeto padrão (Set as Startup
Project, visto no exemplo anterior).
Agora precisamos apenas implementar um
algoritmo que resolva o problema proposto.
Esse algoritmo, por enquanto, tem que estar
definido dentro do método Main.
A seguir temos um modelo de solução para o
problema.
using System;
using System.Collections.Generic;
using System.Text;
namespace Repeticao {
class Program {
static void Main(string[] args) {
int opcao;
do {
Console.WriteLine("nn[1] - Mostrar Tabuada");
Console.WriteLine("[2] - Somar Tabuada");
Console.WriteLine("[0] - Sair do Programa");
Console.Write("Selecione uma opcao -> ");
opcao = Convert.ToInt32(Console.ReadLine());
switch (opcao) {
case 1:
for (int i = 1; i < 10; i++) {
Console.WriteLine("{0}t{1}t{2}t{3}t{4}t{5}t{6}t{7}t{8}",
1*i, 2*i, 3*i, 4*i, 5*i, 6*i, 7*i, 8*i, 9*i);
}
break;
case 2:
int j = 1, soma = 0;
while (j < 10) {
soma = 1*j + 2*j + 3*j + 4*j + 5*j + 6*j + 7*j + 8*j + 9*j;
j++;
}
Console.WriteLine("A soma da tabuada e {0}", soma);
break;
}
} while (opcao != 0);
Console.WriteLine("Programa terminado");
Console.ReadLine();
}
}
}
Programação em C#
Prof. MSc. Liluyoud Cury de Lacerda
50
Como exemplo, temos a
seguinte saída de execução
do programa:
SUBPROGRAMAS
Em ciência da computação , uma subprograma (função ou procedimento) são códigos incluídos dentro
de programas de computador e relativamente independente do resto do código do programa. Maurice
Wilkes, Stanley Gill e David Wheeler são os inventores de subprogramas.
Elas ajudam a estruturar o código de forma organizada e simples, e fundamentam a estrutura de todo
software em tempo de desenvolvimento. Um subprograma é frequentemente uma função chamada
diversas vezes em diferentes momentos do programa, geralmente mais utilizada para programação
estruturada, que distinguem funções, e procedimentos, outras linguagens como linguagem C e LISP não
as distinguem. Na orientação a objetos os subprogramas são chamados de métodos, onde
procedimentos são métodos que tem o tipo de retorno void e funções são métodos que tem um tipo de
retorno diferente de void.
Subprogramas que são muito utilizadas em programas são incluídas da biblioteca padrão da linguagem.
Como utilizamos uma linguagem orientada a objetos, o C#, o que são definidos no programa são
métodos, que serão explicados com mais detalhes no próximo capítulo, específico para Orientação a
Objetos.
Como forma de explanação apenas, vamos definir por cima a sua sintaxe e forma de utilização.
Sintaxe:
Métodos sem retorno
public static void Nome(Parâmetros) {
}
Onde:
Nome é o nome do método
Parâmetros é uma lista separado por vírgula (que
pode ser vazia) contendo todas as variáveis (nome
e tipo) a serem passadas ao método
Métodos com retorno
public static Tipo Nome(Parâmetros) {
...
return Tipo;
}
Onde:
Tipo é o tipo de retorno a ser passado pelo
método (pode ser um número, um texto, e até mesmo
um objeto).
Programação em C#
Prof. MSc. Liluyoud Cury de Lacerda
51
Nome é o nome do método
Parâmetros é uma lista separado por vírgula (que
pode ser vazia) contendo todas as variáveis (nome
e tipo) a serem passadas ao método

Contenu connexe

Tendances

Palestra Teched Brasil 2010 - Sessão INT301 - Linux no Hyper-V
Palestra Teched Brasil 2010 - Sessão INT301 - Linux no Hyper-VPalestra Teched Brasil 2010 - Sessão INT301 - Linux no Hyper-V
Palestra Teched Brasil 2010 - Sessão INT301 - Linux no Hyper-V
GBanin
 
Atividade sor-sambapfmgpo-24082012
Atividade sor-sambapfmgpo-24082012Atividade sor-sambapfmgpo-24082012
Atividade sor-sambapfmgpo-24082012
Carlos Melo
 
Lista de execicio sor-samba-parte2
Lista de execicio sor-samba-parte2Lista de execicio sor-samba-parte2
Lista de execicio sor-samba-parte2
Carlos Melo
 
Visão Geral do windows Server 2008 R2 e Windows 7 SP1
Visão Geral do windows Server 2008 R2 e Windows 7 SP1Visão Geral do windows Server 2008 R2 e Windows 7 SP1
Visão Geral do windows Server 2008 R2 e Windows 7 SP1
Fabio Hara
 
Prova segurança de redes
Prova segurança de redesProva segurança de redes
Prova segurança de redes
Carlos Melo
 
Livro pfsense 2.0 em português
Livro pfsense 2.0 em portuguêsLivro pfsense 2.0 em português
Livro pfsense 2.0 em português
David de Assis
 

Tendances (18)

Tutorial memcached
Tutorial memcachedTutorial memcached
Tutorial memcached
 
Windows server
Windows serverWindows server
Windows server
 
Ebook Apache Server: Guia Introdutório
Ebook Apache Server: Guia IntrodutórioEbook Apache Server: Guia Introdutório
Ebook Apache Server: Guia Introdutório
 
Palestra Teched Brasil 2010 - Sessão INT301 - Linux no Hyper-V
Palestra Teched Brasil 2010 - Sessão INT301 - Linux no Hyper-VPalestra Teched Brasil 2010 - Sessão INT301 - Linux no Hyper-V
Palestra Teched Brasil 2010 - Sessão INT301 - Linux no Hyper-V
 
IBM Domino 9 cluster - zero to hero
IBM Domino 9 cluster - zero to heroIBM Domino 9 cluster - zero to hero
IBM Domino 9 cluster - zero to hero
 
Detalhamento entrega linux4.0
Detalhamento entrega linux4.0Detalhamento entrega linux4.0
Detalhamento entrega linux4.0
 
Primeiros passos com Openstack
Primeiros passos com OpenstackPrimeiros passos com Openstack
Primeiros passos com Openstack
 
Atividade sor-sambapfmgpo-24082012
Atividade sor-sambapfmgpo-24082012Atividade sor-sambapfmgpo-24082012
Atividade sor-sambapfmgpo-24082012
 
Lista de execicio sor-samba-parte2
Lista de execicio sor-samba-parte2Lista de execicio sor-samba-parte2
Lista de execicio sor-samba-parte2
 
Visão Geral do windows Server 2008 R2 e Windows 7 SP1
Visão Geral do windows Server 2008 R2 e Windows 7 SP1Visão Geral do windows Server 2008 R2 e Windows 7 SP1
Visão Geral do windows Server 2008 R2 e Windows 7 SP1
 
Recursos adicionados e melhorias
Recursos adicionados e melhoriasRecursos adicionados e melhorias
Recursos adicionados e melhorias
 
Mcsa 70 410 - portugues br
Mcsa 70 410 - portugues brMcsa 70 410 - portugues br
Mcsa 70 410 - portugues br
 
Sistema Operativo Windows 95 vs Edubuntu
Sistema Operativo Windows 95 vs EdubuntuSistema Operativo Windows 95 vs Edubuntu
Sistema Operativo Windows 95 vs Edubuntu
 
fdyrjdhgd xff
fdyrjdhgd xfffdyrjdhgd xff
fdyrjdhgd xff
 
Prova segurança de redes
Prova segurança de redesProva segurança de redes
Prova segurança de redes
 
Instalação de um servidor debian
Instalação de um servidor debianInstalação de um servidor debian
Instalação de um servidor debian
 
Livro pfsense 2.0 em português
Livro pfsense 2.0 em portuguêsLivro pfsense 2.0 em português
Livro pfsense 2.0 em português
 
01 brazilfw
01 brazilfw01 brazilfw
01 brazilfw
 

Similaire à Apostila c#

Materail para netbeans
Materail para netbeansMaterail para netbeans
Materail para netbeans
Abner Augusto
 

Similaire à Apostila c# (20)

Mercurianos - .Net na Prática - Da instalação até o debug da nossa API em um ...
Mercurianos - .Net na Prática - Da instalação até o debug da nossa API em um ...Mercurianos - .Net na Prática - Da instalação até o debug da nossa API em um ...
Mercurianos - .Net na Prática - Da instalação até o debug da nossa API em um ...
 
Treinamento Android Embarcado
Treinamento Android EmbarcadoTreinamento Android Embarcado
Treinamento Android Embarcado
 
2006 - Distribuindo sua Aplicação.ppt
2006 - Distribuindo sua Aplicação.ppt2006 - Distribuindo sua Aplicação.ppt
2006 - Distribuindo sua Aplicação.ppt
 
Estudo dirigido prova_70-680_new
Estudo dirigido prova_70-680_newEstudo dirigido prova_70-680_new
Estudo dirigido prova_70-680_new
 
39 visual basic net
39 visual basic net39 visual basic net
39 visual basic net
 
2006 - SegundaAula.ppt
2006 - SegundaAula.ppt2006 - SegundaAula.ppt
2006 - SegundaAula.ppt
 
tutorial nagios
tutorial nagiostutorial nagios
tutorial nagios
 
ASP.NET e Visual Studio 2010
ASP.NET e Visual Studio 2010ASP.NET e Visual Studio 2010
ASP.NET e Visual Studio 2010
 
Video Streaming - Final Presentation
Video Streaming - Final PresentationVideo Streaming - Final Presentation
Video Streaming - Final Presentation
 
Video Streaming
Video StreamingVideo Streaming
Video Streaming
 
TechEd_OFC302
TechEd_OFC302TechEd_OFC302
TechEd_OFC302
 
Materail para netbeans
Materail para netbeansMaterail para netbeans
Materail para netbeans
 
Construção e provisionamento de ambientes de desenvolvimento virtualizados
Construção e provisionamento de ambientes  de desenvolvimento virtualizadosConstrução e provisionamento de ambientes  de desenvolvimento virtualizados
Construção e provisionamento de ambientes de desenvolvimento virtualizados
 
Windows Azure na Prática
Windows Azure na PráticaWindows Azure na Prática
Windows Azure na Prática
 
MVP Virtual Conference (MVP V-Conf) 2015: Executando ASP.NET MVC 6 no Mac OS ...
MVP Virtual Conference (MVP V-Conf) 2015: Executando ASP.NET MVC 6 no Mac OS ...MVP Virtual Conference (MVP V-Conf) 2015: Executando ASP.NET MVC 6 no Mac OS ...
MVP Virtual Conference (MVP V-Conf) 2015: Executando ASP.NET MVC 6 no Mac OS ...
 
Entrega ebook-gratis
Entrega ebook-gratisEntrega ebook-gratis
Entrega ebook-gratis
 
Trabalhando com ambientes complexos – SharePoint 2007 e SQL Server 2005
Trabalhando com ambientes complexos – SharePoint 2007 e SQL Server 2005Trabalhando com ambientes complexos – SharePoint 2007 e SQL Server 2005
Trabalhando com ambientes complexos – SharePoint 2007 e SQL Server 2005
 
Docker com ASP.NET Core e Hospedagem no Azure
Docker com ASP.NET Core e Hospedagem no AzureDocker com ASP.NET Core e Hospedagem no Azure
Docker com ASP.NET Core e Hospedagem no Azure
 
Sistema operativo de rede
Sistema operativo de redeSistema operativo de rede
Sistema operativo de rede
 
Webinar: Utilizando o Yocto Project para automatizar o desenvolvimento em Lin...
Webinar: Utilizando o Yocto Project para automatizar o desenvolvimento em Lin...Webinar: Utilizando o Yocto Project para automatizar o desenvolvimento em Lin...
Webinar: Utilizando o Yocto Project para automatizar o desenvolvimento em Lin...
 

Apostila c#

  • 1. APOSTILA DE PROGRAMAÇÃO EM C# PROF. MSC. LILUYOUD CURY DE LACERDA
  • 2. Programação em C# Prof. MSc. Liluyoud Cury de Lacerda 2 CONTEÚDO Pré-requisitos:.......................................................................................................................................................................................... 4 DVD de Acompanhamento.............................................................................................................................................................. 4 Instalação.................................................................................................................................................................................................... 5 Instalação do Servidor Web (IIS)................................................................................................................................................. 5 Instalação do .NET Framework .................................................................................................................................................... 6 Instalando o Visual Studio 2005................................................................................................................................................... 9 Instalando Componentes Adicionais........................................................................................................................................14 O Visual Studio 2005............................................................................................................................................................................15 Menu Principal...................................................................................................................................................................................16 Barra de Atalhos................................................................................................................................................................................16 Solution Explorer..............................................................................................................................................................................16 Properties Window..........................................................................................................................................................................17 ToolBox.................................................................................................................................................................................................19 Area de Trabalho ..............................................................................................................................................................................19 Start Page ........................................................................................................................................................................................20 Aplicação em modo de Design................................................................................................................................................21 Aplicação em modo de Codificação ......................................................................................................................................22 A linguagem C#.......................................................................................................................................................................................23 História da Linguagem ...................................................................................................................................................................23 Criação do Nome..........................................................................................................................................................................24 Normalização.................................................................................................................................................................................24 Política..............................................................................................................................................................................................24 Características....................................................................................................................................................................................24 Produtividade e Segurança......................................................................................................................................................25 Abraça os padrões emergentes de programação Web.................................................................................................26 Elimina erros de programação de alto custo....................................................................................................................26 Reduz os custos de desenvolvimento do dia a dia com suporte pré-construído para versioning.............26 Melhor mapeamento entre processos de negócio e implementação.....................................................................27 Interoperabilidade extensiva..................................................................................................................................................27 Bibliotecas de código..................................................................................................................................................................28 Estruturas da linguagem ....................................................................................................................................................................29 Criando uma Solução.......................................................................................................................................................................29 Criando o Programa Alo Mundo.................................................................................................................................................30 Estruturas básicas............................................................................................................................................................................33 Comentários...................................................................................................................................................................................33
  • 3. Programação em C# Prof. MSc. Liluyoud Cury de Lacerda 3 Blocos de Comando.....................................................................................................................................................................34 Variáveis e Tipos de Dados......................................................................................................................................................35 Conversão de Tipos.....................................................................................................................................................................37 Estruturas de Controle...................................................................................................................................................................41
  • 4. Programação em C# Prof. MSc. Liluyoud Cury de Lacerda 4 PRÉ-REQUISITOS: Para o bom andamento do curso e para que o aluno possa testar os programas aqui desenvolvidos faz- se necessário ter um mínimo de infra-estrutura computacional para se criar um ambiente de desenvolvimento: O computador deve estar rodando um dos seguintes Sistemas Operacionais:  Windows 2000 com SP4  Windows XP com o Windows Instaler 3.1  Windows XP SP2  Windows 2003 Server  Windows Vista O computador deve ter pelo menos 1.0 GHz de processador e 512Mb de RAM e 2Gb livre no Disco Rígido. Caso o queira instalar o SQL Server 2005 Express Edition, que é um servidor de banco de dados poderoso e gratuito da Microsoft, recomenda-se pelo menos 1Gb RAM. DVD DE ACOMPANHAMENTO Para facilitar, junto a apostila é entregue um DVD com a seguinte estrutura, onde:  Ajax é o diretório onde se encontra a instalação do Ajax para .NET (Web 2.0).  Apostilas é o diretório onde se encontra algumas apostilas que envolvem .NET.  Componentes é o diretório onde se encontra algumas suítes de componentes para .NET (versões Trials).  SQL Server é o banco de dados gratuito da Microsoft que é totalmente integrado ao Visual Studio.  Vídeos é o diretório onde se encontra alguns tutoriais em vídeo da plataforma .NET.  Visual Studio é o diretório onde se encontra o Ambiente de desenvolvimento para o .NET Framework (versão trial de 180 dias).  DotNet Framework.exe é o arquivo de instalação da a plataforma de desenvolvimento .NET.  Visual Studio SP1.exe é o arquivo de instalação do Service Pack 1 do Visual Studio.
  • 5. Programação em C# Prof. MSc. Liluyoud Cury de Lacerda 5 INSTALAÇÃO Para preparar um ambiente integrado de desenvolvimento completo baseado em .NET, tanto para Windows quanto para Web, temos que seguir os seguintes passos:  Instalação do servidor web, no caso o IIS  Instalação do .NET Framework  Instalação do Visual C# (com ou sem banco de dados dependendo da sua máquina)  Instalação do Visual Web Developer  Instalação do Visual Studio Service Pack 1  Instalação do Ajax  Instalação de Componentes Adicionais INSTALAÇÃO DO SERVIDOR WEB (IIS) O IIS (Internet Information Services) é um servidor web criado pela Microsoft para seus sistemas operacionais possuindo um conjunto integrado de serviços de rede que permite publicar conteúdo e disponibilizar arquivos e aplicações em ambientes Internet/Intranet/Extranet, totalmente integrado ao sistema operacional e dotado de uma interface administrativa 100% gráfica, o IIS é uma das melhores opções disponíveis para hospedagem de web sites, site FTP e grupos de notícias, bem como o desenvolvimento de aplicações para Web. Sua primeira versão foi introduzida com o Windows NT Server versão 4, e passou por várias atualizações. As últimas versões disponíveis são:  IIS 5.0 para Windows XP  IIS 6.0 para Windows 2003  IIS 7.0 para Windows Vista e 2003. Uma de suas principais características é a geração de páginas HTML dinâmica como o ASP (Active Server Pages) e ASPX (evolução do ASP), mas também pode usar outras tecnologias com adição de módulos de terceiros. Depois do lançamento da plataforma .NET em 2002 o IIS ganhou também a função de gerenciar o ASP.NET. Este é formado basicamente por dois tipos de aplicações:  Páginas Web: Páginas tradicionais acessadas por usuários, contém a extensão ASPX  Web Services: Funções disponibilizadas pela rede, chamada por aplicativos ASMX O ASP.NET é compilado antes da execução. Esta característica traz vantagens sobre as opções interpretadas, como o ASP, JSP e o PHP. Além de servidor web, suporta a criação e a utilização de certificados digitais com o Certificate Services, a tecnologia de colaboração via Internet com Sharepoint Services e WebDAV, as diretivas Server-Side Includes (SSI) e auditoria completa de visitas e uso. Para instalar o IIS no Windows XP, devemos seguir os seguintes passos:
  • 6. Programação em C# Prof. MSc. Liluyoud Cury de Lacerda 6 1. Abra o Painel de Controle do Windows 2. Clique em Adicionar e remover programas 3. Clique em Adicionar / remover componentes do Windows 4. Caso a opção Internet Information Services (IIS) não esteja marcada, marque-a, e clique em avançar. Se já estiver marcado, o IIS já está instalado. 5. Para concluir a instalação, será pedido o CD do Windows XP e depois de colocá-lo, o IIS será instalado automaticamente. INSTALAÇÃO DO .NET FRAMEWORK Microsoft .NET é uma iniciativa da Microsoft em que visa uma plataforma única para desenvolvimento e execução de sistemas e aplicações. Todo e qualquer código gerado para .NET, pode ser executado em qualquer dispositivo ou plataforma que possua um framework: a "Plataforma .NET" (.NET Framework). Com idéia semelhante à plataforma Java, o programador deixa de escrever código para um sistema ou dispositivo específico, e passa a escrever para a plataforma .NET.
  • 7. Programação em C# Prof. MSc. Liluyoud Cury de Lacerda 7 A plataforma .NET, é executada sobre uma CLR (Common Language Runtime - Ambiente de Execução Independente de Linguagem) interagindo com uma Coleção de Bibliotecas Unificadas, que juntas são o próprio framework. Esta CLR é capaz de executar, atualmente, mais de vinte diferentes linguagens de programação, interagindo entre si como se fossem uma única linguagem, entre elas podemos citar:  APL  Boo  Fortran  Pascal  C++  Haskell  Perl  C#  Java  Python  COBOL  Microsoft JScript®  RPG  Component Pascal  Mercury  Scheme  Curriculum  Mondrian  SmallTalk  Eiffel  Oberon  Standard ML  Forth  Oz  Microsoft Visual Basic  Delphi  J#  Ruby  Lua Esta plataforma permite a execução, construção e desenvolvimento de Web Services e Aplicações Web de forma integrada e unificada. A plataforma .NET se baseia em um dos principios utilizados na tecnologia Java (compiladores JIT), os programas desenvolvidos para ela são duplo-compilados, ou seja são compilados duas vezes, uma na distribuição e outra na execução. Um programa é escrito em qualquer umas das linguagens de programação disponível para a plataforma, o código fonte gerado pelo programador é então compilado pela linguagem escolhida gerando um código intermediário em uma linguagem chamada MSIL (Microsoft Intermediate Language). Este novo código fonte gera um arquivo chamado de Assembly, de acordo com o tipo de projeto:  EXE - Arquivos Executáveis, Programas  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, por exemplo: Temos um Web Site desenvolvido em ASP.NET, ao entrar pela primeira vez em uma página o JIT irá compilá-la, nas outras vezes que algum outro usuário acessar esta página, ele usará esta compilação. Também é possível, através de ferramentas específicas, "pré-compilar" o código para que não se tenha o custo da compilação JIT durante a execução. O fato desta arquitetura utilizar a MSIL gera uma possibilidade pouco desejada entre os criadores de software que é a de fazer a "engenharia reversa", ou seja, a partir de um código compilado, recuperar o
  • 8. Programação em C# Prof. MSc. Liluyoud Cury de Lacerda 8 código original. Isto não é uma idéia agradável para as empresas que sobrevivem da venda de softwares produzidos nesta plataforma. Por causa disso, existem ferramentas que "ofuscam" este código MSIL, trocando nomes de variáveis, métodos, interfaces e etc para dificultar o trabalho de quem tentar uma engenharia reversa num código compilado MSIL. A versão atual do .NET Framework é a 3.0, chamado de WinFx. Esse é o framework padrão do Windows Vista, mas pode ser instalado no Windows XP sem problemas. O WinFx foi lançado oficialmente no fim de 2006 e as principais funcionalidades adicionadas em relação a versão 2.0 é a incorporação de 3 tecnologias base:  Windows Communication Foundation: Permite gerenciar toda a comunicação entre os componentes do .NET  Windows Presentation Foundation: Permite criar uma interface do usuário bem mais rica, com recursos 3D entre outros.  Windows Workflow Foundation: Permite gerenciar o fluxo de informações dentro de uma entrutura baseada em .NET O .Net Framework 3.0 (WinFx) pode ser baixado diretamente do site da Microsoft pelo endereço: http://www.microsoft.com/downloads/details.aspx?displaylang=pt-br&FamilyID=10CC340B-F857-4A14-83F5-25634C3BF043 ou para quem tem o DVD que acompanha a apostila, basta seguir os seguintes passos: 1. Execute o arquivo DotNet Framework.exe localizado na pasta raiz do DVD 2. Marque a opção aceitar o contrato de licença e clique no botão Instalar 3. Caso você dê um duplo clique no tray icon você verá o andamento da instalação 4. Quando a instalação acabar aparecerá essa tela de Instalação com êxito. Clique em sair.
  • 9. Programação em C# Prof. MSc. Liluyoud Cury de Lacerda 9 INSTALANDO O VISUAL STUDIO 2005 Microsoft Visual Studio 2005 é um programa desenvolvido pela Microsoft, que possibilita um ambiente integrado de desenvolvimento (IDE). Existem várias versões do mesmo, dentre elas podemos citar:  O Visual Studio Express que consiste em 6 produtos separados com objetivos específicos que são o Visual Basic 2005 Express Edition, Visual C# 2005 Express Edition, Visual C++ 2005 Express Edition, Visual J# 2005 Express Edition, Visual Web Developer 2005 Express Edition, e SQL Server 2005 Express Edition.  O Visual Studio 2005 Professional Edition que é composto pelos 6 programas acima integrados e mais algumas funcionalidades existente apenas na versão Professional tais como ferramentas de Acessibilidade, Testes Automatizados e Análise, e principalmente, o suporte a add-ins e macros de terceiros, que permitem estender a funcionalidade da IDE.  O Visual Studio 2005 Team Edition que tem todas as funcionalidades do Professional, mas uma extensa lista de características específicas para colaboração em equipe, gerenciamento de projetos, ferramentas de Banco de Dados e Business Inteligence – BI, entre muitas outras características. Nessa versão se faz necessário um servidor chamado Team Server rodando sobre o Windows 2003 Server, juntamente com o Banco de Dados SQL Server 2005 e Sharepoint Services 2007. Com o Visual Studio temos a nossa disposição um ambiente especialmente dedicado ao desenvolvimento e ao Framework .NET, baseado nas linguagens Visual Basic (VB), C++ (C Plus Plus), C#(C Sharp) e J# (Jey Sharp), permitindo que qualquer pessoa possa criar e modificar aplicações, seja web, móvel ou desktop. O Visual Studio contém:  Um editor WYSIWYG (O que você vê é o que você tem)  Drag-and-drop (arrastar e soltar)  Ferramenta de desenho de interfaces de usuário  Suporte a HTML Extendido & editores de código e HTML  Um gerenciador de banco de dados  Suporte a outras tecnologias web, tais como CSS, Javascripte XML  Um ambiente integrado de validação em tempo de desenho para padrões como XHTML 1.0/1.1 e CSS 2.1.  Exemplos prontos de projetos, que no Visual Studio são chamados de Starters Kit. Junto com o Visual Studio tem alguns, mas no site da Microsoft, você pode encontrar muitos outros projetos. Com isso, o Visual Studio é considerado a melhor ferramenta para análise, desenho e desenvolvimento de aplicações (projetos de desenvolvimento). O Visual Studio 2005 Express pode ser baixado gratuitamente do site da Microsoft pelo endereço: http://msdn.microsoft.com/vstudio/express/downloads/ ou para quem tem o DVD que acompanha a apostila, tem uma versão trial de 180 dias da versão Team Edition do Visual Studio. Para instalá-lo, basta seguir os seguintes passos:
  • 10. Programação em C# Prof. MSc. Liluyoud Cury de Lacerda 10 1. Dentro do diretório Visual Studio e no subdiretório VS, execute (duplo clique) o arquivo setup.exe. Ao aparecer a tela a seguir, clique em Install Visual Studio 2005. 2. Depois da descompactação dos arquivos de instalação aparecerá a tela a seguir. Apenas clique em Next. 3. Clique na opção I accept terms of the License Agreement para aceitar a licença de uso da Microsoft, e depois clique em Next. 4. Selecione a instalação personalizada selecionando a opção Custom e depois clique em Next.
  • 11. Programação em C# Prof. MSc. Liluyoud Cury de Lacerda 11 5. Desmarque a opção Microsoft SQL Server por 2 motivos:  Se sua máquina tiver apenas 512 Mb RAM ou menos, não é recomendável instalá-lo.  Caso sua máquina tenha mais de 512 Mb, então o recomendável é instalar a versão full do SQL Server 2005Express que é gratuito e pode ser baixado no site da Microsoft, e é o mesmo que se encontra no DVD da apostila. 6. A tela de acompanhamento da instalação será apresentada. Pode acontecer nesse meio tempo, ser necessário a reinicialização do Windows (vai depender da configuração de sua máquina). Mas ao reiniciar, a instalação continuará de onde parou. 7. Ao final da instalação, clique em Finish. 8. Depois de instalado o Visual Studio, a tela inicial da instalação é mostrada novamente. Nesse caso é importante que seja instalado também o MSDN, que é toda a documentação do Visual Studio, suas bibliotecas, o help, exemplos, entre outros. Clique em Install Product Documentation para instalar o MSDN
  • 12. Programação em C# Prof. MSc. Liluyoud Cury de Lacerda 12 9. Ao aparecer a tela de instalação do MSDN, clique em Next. 10. Clique na opção I accept terms of the License Agreement para aceitar a licença de uso da Microsoft, e depois clique em Next. 11. Digite suas informações. 12. Selecione a instalação completa (Full) e clique em Next.
  • 13. Programação em C# Prof. MSc. Liluyoud Cury de Lacerda 13 13. Escolha o diretório de instalação (pode deixar o padrão) e clique em Next. 14. Clique em Install. 15. A instalação começa 16. Ao finalizar a instalação feche a janela. A tela inicial da instalação é mostrada novamente, mas desta vez basta sair (clicar em Exit), pois o Visual Studio e sua documentação já estão instalados. 17. É importante também instalar os service packs para o VS. Você pode usar o Microsoft Update para tanto, ou instalar diretamente do DVD que acompanha a apostila.
  • 14. Programação em C# Prof. MSc. Liluyoud Cury de Lacerda 14 Na raiz do DVD, execute (duplo clique) o arquivo Visual Studio SP1.exe. 18. Clique em OK na 2ª tela e logo depois clique em I accept. O SP1 se auto instalará e depois basta clicar em OK novamente ao final da instalação. INSTALANDO COMPONENTES ADICIONAIS Uma das grandes vantagens da plataforma .NET é a extensa variedade de objetos complementares que podem ser reutilizados em seus projetos de desenvolvimento. Os objetos vão desde componentes visuais que melhoram a interface de sua aplicação, até modelos e frameworks de negócios que facilitam o desenvolvimento de projetos complexos. Esse tipo de modelo de extensão por meio de componentes (que já existia na época do Delphi) é um grande aliado da plataforma, o que a distingue enormemente dos demais (a proporção de componentes existentes para plataforma .NET em comparação a outras plataformas como Java, é maior que a proporção de computadores com Windows Instalado versus Linux). Os principais fornecedores (dentre muitos) desses componentes são:  Developer Express – http://www.devexpress.com  Component One – http://www.componentone.com  Dundas Software – http://www.dundas.com  Infragistics – http://www.infragistics.com Todos eles tem uma versão demo totalmente funcional na qual podem ser utilizados em seu projeto em fase de desenvolvimento. Lógico que ao comercializá-lo, far-se-á necessário o licenciamento do mesmo. Existem também uma variedade de componentes gratuitos e poderosos disponíveis para download, e quem sabe, você mesmo não crie sua suíte de componentes e disponibiliza para outros. No DVD, na pasta Componentes, temos algumas dessas suítes de componentes que podem ser instalados no seu computador para complementar as funcionalidades já existentes no Visual Studio. É altamente recomendável trabalhar com eles, já que diminui muito o tempo de desenvolvimento de um sistema e deixa o mesmo com um aspecto bem mais profissional, o que diminui substancialmente o custo de um projeto e aumenta a qualidade do mesmo. Para instalá-los basta executar o pacote correspondente a cada um dos componentes e seguir os passos básicos para instalação (clicar Next, Next, Next e Install).
  • 15. Programação em C# Prof. MSc. Liluyoud Cury de Lacerda 15 O VISUAL STUDIO 2005 O Visual Studio 2005, como já foi visto, é um ambiente integrado de desenvolvimento (IDE) para a plataforma .NET. Podemos considerá-lo também uma ferramenta RAD (Rapid Application Development), que nos permite criar aplicações de maneira bem rápida e intuitiva, uma herança do Delphi, já que a equipe que desenvolveu o .NET foi a mesma que outrora desenvolveu o Delphi da Borland. Com essa IDE podemos:  Criar e gerenciar projetos  Desenhar janelas , formulários e relatórios  Criar e analisar os códigos fontes de diversas linguagens compatíveis com o .NET  Executar e depurar aplicações para Desktop, Web, PocketPC, SmartPhone e lógico, para ambientes corporativos  Gerenciar banco de dados e  Colaboração entre equipe de desenvolvimento, testes, gerentes e arquitetos de software Para entender melhor a IDE, vamos explicá-la com detalhes: O Visual Studio (VS) é divido em vários módulos, dentre os principais podemos citar:
  • 16. Programação em C# Prof. MSc. Liluyoud Cury de Lacerda 16 MENU PRINCIPAL Todas as ações que o VS pode executar, é acessível pelo Menu Principal, desde a criação de um projeto, seu acompanhamento (gerenciamento), até a sua distribuição. Para acessar o Menu Principal, basta selecionar o item desejado com o mouse ou usar teclas de atalho correspondentes a cada item de menu. Com a tecla Alt+[Letra sublinhada no menu], acessamos diretamente o item menu indicado. BARRA DE ATALHOS As funções mais comuns do Menu Principal, tem um equivalente na Barra de Atalhos, que é uma maneira mais fácil de ser acionada (com apenas um clique). Nem todas as barras de atalhos estão visíveis por padrão, apenas as principais, dado um determinado contexto (quando estamos codificando um programa as barras apresentadas podem ser diferentes quando estamos desenhando uma janela). Para verificar todas as barras de atalhos disponíveis e poder visualizá-las ou não, basta ir no menu View, no item ToolBars e selecionar as Barras de Atalhos que gostaria que estivesse disponíveis. SOLUTION EXPLORER É o local onde gerenciamos todos nossos projetos, seus arquivos e configurações. Podemos dizer que o Solution Explorer está para os projetos de desenvolvimento tanto quanto o Windows Explorer está para os arquivos e recursos do Windows. O conceito de Solution é usado pela Microsoft para definir um conjunto de projetos, seja ele de desenvolvimento, de banco de dados, de testes ou de distribuição. Para visualizar essa janela (caso ela não esteja visível), basta ir no menu View e selecionar Solution Explorer, ou usar a tecla de atalho Crtl+W+S.
  • 17. Programação em C# Prof. MSc. Liluyoud Cury de Lacerda 17 Como exemplo, podemos verificar na figura que:  temos uma Solution chamado Sistemas,  que esses sistemas então subdivididos em Pastas (sistemas para a Fatec, sistemas para São Lucas, Frameworks de desenvolvimento e Projetos comerciais),  que cada pasta pode ser subdividida em quantas pastas forem necessárias e  que uma pasta pode armazenar Projetos de Desenvolvimento e outros tipos de projetos. Em um Projeto temos toda uma estrutura de pastas e arquivos, só que totalmente relacionadas a aquele projeto, que pode ser um:  arquivo de código fonte,  um arquivo de layout de página web,  uma imagem,  um arquivo de propriedades, ou  qualquer outro tipo de arquivo que venha fazer parte desse projeto. Ilustrando melhor, o item marcado na figura ao lado é um arquivo de código fonte feito em C# chamado Funcionario.cs, que pertence ao projeto Funcionário, que está dentro de uma pasta chamada POO, que está dentro de Fatec, que está dentro de Faculdades e que pertence a Solution Sistemas. PROPERTIES WINDOW Como toda a programação .NET é baseada em Orientação a Objetos, e os objetos por definição tem características (propriedades) e apresenta um determinado comportamento (executam ações dado uma determinada circunstância/evento), a janela Properties Windows tem como objetivo mostrar as propriedades de cada objeto pertencente ao Sistema e gerenciar todos os eventos na qual esse objeto poderá responder. Para visualizar essa janela (caso ela não esteja visível), basta ir no menu View e selecionar Properties Window, ou usar a tecla de atalho Crtl+W+P.
  • 18. Programação em C# Prof. MSc. Liluyoud Cury de Lacerda 18 Ao trabalhar na área de design (desenho) do seu sistema, essa janela do Visual Studio se faz de extrema importância, dado que cada componente visual de uma janela ou página web é na verdade um objeto, e alterando as características e comportamento desse objeto, podemos determinar como nossa aplicação será tanto em termos de interface (determinado basicamente pelas características dos objetos) quanto em termos de funcionalidade (terminado basicamente pelas ações que os objetos executam dado um determinado evento). Na janela ao lado estamos vendo as propriedades de um objeto/componente visual. O objeto em questão se chama Principal e é do tipo (ou classe já que falamos de OO) DevExpress.XtraBars.Ribbon.RibbonForm. Essa informação pode ser visualizada na parte de cima da janela Properties. O nome do objeto é dado pela propriedade (Name) para programas do tipo desktop ou (ID) para programas Web. Percebemos também que as propriedades estão categorizadas, como exemplo acima, a propriedade (Name) está na categoria Design (Desenho). Temos outras categorizações, como propriedades específicas para aparência (Appearance), propriedades para comportamento (Behavior), para vinculação de dados (Data), entre muitas outras categorias que variam de objeto para objeto. Caso você deseje que essas propriedades fiquem em ordem alfabética em vez de categorizadas, basta clicar em ou clicar em para voltar a ficar categorizadas. Como foi falado anteriormente, na janela Properties também pode-se visualizar aspectos relacionados ao comportamento do objeto. Nessa janela, mais especificamente o comportamento é definido pelos eventos que um objeto pode tratar, e quando um desses eventos ocorre podemos relacionar uma ação a ser executada com um desses eventos Como exemplo pode-se imaginar no que vai acontecer (ação) quando clicarmos com o mouse (evento) em cima dessa janela. Para visualizar os eventos tratados por esse objeto em questão, basta clicar em , e caso deseje voltar a visualizar as propriedades, clique em .
  • 19. Programação em C# Prof. MSc. Liluyoud Cury de Lacerda 19 TOOLBOX O Visual Studio é considerado uma ferramenta RAD (Rapid Application Development), que permite criar aplicações de maneira rápida, e isso se dá em grande parte pelo uso de componentes (objetos) das mais diversas finalidades e totalmente funcionais. Existem componentes para:  Criação de interface com o usuário;  Controle de segurança;  Comunicação e interoperabilidade de sistemas;  Acesso a Banco de Dados;  Entre milhares de outros. E a maioria deles, para ser usado, basta clicar no componente desejado, arrastar para a sua aplicação e soltar na posição desejada, muito simples. Depois é necessário configurar as propriedades e eventos a serem usados para personalizar sua aplicação. Além disso, você pode criar seus próprios componentes, ou modificar os já existentes para atender as suas necessidades, e isto aumenta ainda mais o número de componentes disponíveis (já foi falado aqui de algumas das suítes de componentes mais famosas para desenvolvimento .NET). Os componentes instalados na sua aplicação estão disponíveis na janela Toolbox, e essa janela pode ser totalmente configurada para mostrar os componentes que você mais utiliza, podendo agrupá-los ou não de acordo com a figura ao lado. Para visualizar essa janela (caso ela não esteja visível), basta ir no menu View e selecionar Toolbox, ou usar a tecla de atalho Crtl+W+X. Dependendo do tipo de aplicação que esteja trabalhando, seja web, desktop ou compact, (aplicações que utilizam o .NET Compact Framework, específico para PocketPCs e SmartPhones/Celulares) os componentes disponibilizados (e visíveis) podem ser diferentes, já que nem todos os componentes funcionam em todas essas plataformas. Por isso, os componentes disponibilizados são somente aqueles que funcionariam na aplicação em que está trabalhando no momento. AREA DE TRABALHO
  • 20. Programação em C# Prof. MSc. Liluyoud Cury de Lacerda 20 É o local onde visualizamos e modificamos o layout de um sistema ou seu código fonte. É a parte principal do Visual Studio, onde permite aos programadores, analistas, gerentes de projeto, administradores de banco de dados, arquitetos de software, entre outros a interagir com o ambiente para criar soluções em projetos de desenvolvimento de sistemas. Na área de trabalho pode-se visualizar: Start Page Quando iniciamos o VS, uma Página Inicial (Start Page) é mostrada na área de trabalho. Nessa página podemos visualizar:  os projetos que você trabalhou ultimamente (Recent Projects),  um tutorial (em Inglês) de uso do VS (Getting Started),  as últimas notícias do MSDN (Microsoft Developer Network),  entre outras informações que podem ser personalizadas. Caso essa página não esteja disponível, clique em View, depois em Other Windows e selecione Start Page.
  • 21. Programação em C# Prof. MSc. Liluyoud Cury de Lacerda 21 Aplicação em modo de Design Boa parte de um projeto de desenvolvimento envolve a definição da interface com o usuário. Com o Visual Studio, pode-se visualizar, mesmo no momento do desenvolvimento, uma interface exatamente igual ao que será apresentada ao usuário final (tecnologia WYSIWYG – What You See Is What You Get). Na janela acima temos muitos componentes visuais, que serão apresentados exatamente iguais ao usuário quando o programa for executado. Entretanto, em modo de desenvolvimento, componentes não visuais também são vistos para poderem ser editados. É o caso do componente chamado Estilo (abaixo da figura). Componentes não visuais estarão disponibilizados na área abaixo da janela e somente são visíveis no modo de desenvolvimento e não em execução.
  • 22. Programação em C# Prof. MSc. Liluyoud Cury de Lacerda 22 Aplicação em modo de Codificação Um sistema certamente tem uma lógica de programação por traz dele, codificado em uma determinada linguagem, que no nosso caso é o C# (C Sharp). Assim como pode-se ver uma janela em modo de desenho (exemplo anterior), pode-se visualizar todo o código fonte por traz daquela interface, o código que representa toda a funcionalidade de sua aplicação (nesse caso da janela). Caso o exemplo mostrado fosse de um projeto para Web, também seria possível visualizar o código HTML por traz de cada página Web. Para mais detalhes assista o vídeo 01 – Apresentando o Visual Studio que está no DVD que acompanha a apostila dentro da pasta Vídeos.
  • 23. Programação em C# Prof. MSc. Liluyoud Cury de Lacerda 23 A LINGUAGEM C# Nas últimas duas décadas, C e C++ foram as linguagens mais amplamente usadas para o desenvolvimento de software comercial e de negócios. Embora as duas linguagens proporcionem ao programador uma quantidade enorme de controle granular, esta flexibilidade possui um custo para a produtividade. Comparadas com uma linguagem como o Microsoft® Visual Basic®, aplicações C e C++ equivalentes freqüentemente demoram mais para serem desenvolvidas. Devido a complexidade e longos tempos de ciclo associados a essas linguagens, muitos programadores C e C++ vêm procurando uma linguagem que ofereça um melhor balanceamento entre poder e produtividade. Existem linguagens atualmente que aumentam a produtividade sacrificando a flexibilidade que programadores C e C++ freqüentemente demandam. Tais soluções restringem demais o desenvolvedor (por exemplo, omitindo um mecanismo para controle de código de baixo nível) e proporcionam capacidades do menor denominador comum. Elas não interoperam facilmente com sistemas pré- existentes, e nem sempre combinam bem com as práticas de programação Web atuais. A solução ideal para programadores C e C++ seria o desenvolvimento rápido combinado ao poder de acesso a funcionalidade total da plataforma básica. Eles desejam um ambiente totalmente sincronizado com os padrões Web emergentes que proporcione a fácil integração com as aplicações existentes. Adicionalmente, desenvolvedores C e C++ gostariam de ter a habilidade de codificar em baixo nível quando e se a necessidade aparecer. A solução Microsoft para este problema é uma linguagem chamada C#. C# é uma moderna linguagem orientada a objeto que habilita os programadores a construir rapidamente uma ampla gama de aplicações para a nova plataforma Microsoft .NET, a qual proporciona ferramentas e serviços que exploram totalmente a computação e as comunicações. Devido ao seu elegante projeto orientado a objeto, C# é uma escolha excelente para arquitetar uma ampla gama de componentes – de objetos de negócio de alto nível a aplicações no nível do sistema. Usando construções de linguagem C# simples, estes componentes podem ser convertidos em serviços Web, permitindo que eles sejam invocados pela Internet, a partir de qualquer linguagem rodando em qualquer sistema operacional. Principalmente, C# é projetado para trazer desenvolvimento rápido para o programador C++ sem sacrificar o poder e o controle que têm sido a característica fundamental do C e C++. Devido a esta herança, C# possui um alto grau de fidelidade com C e C++. Desenvolvedores familiarizados com estas linguagens podem se tornar produtivos em C# rapidamente. HISTÓRIA DA LINGUAGEM A linguagem C# foi criada junto com a arquitetura .NET. Embora existam várias outras linguagens que suportam essa tecnologia (como VB.NET, C++, J#), C# é considerada a linguagem símbolo do .NET pelas seguintes razões:  Foi criada praticamente do zero para funcionar na nova plataforma, sem preocupações de compatibilidade com código de legado.  O compilador C# foi o primeiro a ser desenvolvido.  A maior parte das classes do .NET Framework foram desenvolvidos em C#. O criação da linguagem, embora tenha sido feita por vários desenvolvedores, é atribuída principalmente a Anders_Hejlsberg , hoje um “Distinguished Engineer” na Microsoft. Anders Hejlsberg era
  • 24. Programação em C# Prof. MSc. Liluyoud Cury de Lacerda 24 desenvolvedor de compiladores na Borland, e entre suas criações mais conhecidas estão o Turbo Pascal e o Delphi. Criação do Nome Muitos pensam que o nome C# viria de uma sobreposição de 4 símbolos "+" dando a impressão de "++++". Na verdade o "#" de C# refere-se ao sinal musical, que aumenta um tom denotado por uma letra (entre A e G) pela metade de um tom. O símbolo real seria o ♯ e não o #, porém, devido a limitação de telas, fontes e alguns browsers, no momento da normalização junto a ECMA, fora especificado apenas que o nome da linguagem seria uma letra C maiúscula (U+0043) e o sinal "#" (U+0023), facilitando assim, publicações e artigos com um caracter encontrado facilmente dos layouts de teclado padrões. Normalização A Microsoft submeteu o C# a ECMA para uma padronização formal. Em Dezembro de 2001 a ECMA liberou a especificação ECMA-334 Especificação da Linguagem C#. Em 2003 tornou-se uma padrão ISO (ISO/IEC 23270). Há algumas implementações em desenvolvimento, destacando:  Mono, implementação open source da Ximian.  dotGNU e Portable.NET da Free Software Foundation.  Delphi 2005 da Borland. Recentemente a Microsoft anunciou planos de adicionar o suporte a tipos parciais, generics e outras características. A padronização pela ECMA/ISO destas características foi solicitada, mas ainda não são parte da versão padrão da linguagem. Política Muitos dos produtos e iniciativas da Microsoft geram polêmica no campo político e a criação e desenho da C# não foi excepção. Devido à natureza fechada da C# com uma instituição comercial, a discussão política continua em relação à legitimidade da sua normalização, as suas semelhanças com Java, o seu futuro como uma linguagem para uso generalizado e outros assuntos. Alguns peritos em segurança encontram-se cépticos em relação à eficácia do mecanismo de segurança do CLR e criticam a sua complexidade. Ao contrário de linguagens proprietárias tal como a Visual Basic, a Microsoft optou por submeter a C# a um processo de normalização. No entanto, a Microsoft continua a ser a principal força a induzir mudanças e inovação na linguagem. Além disso, a Microsoft tornou bem claro que a C#, tal como outras linguagens .NET, é uma parte importante da sua estratégia de software, tanto para uso interno e para consumo externo. A Microsoft leva a cabo um papel ativo em descrever a linguagem como uma componente da sua estratégia global de negócios. CARACTERÍSTICAS C# (pronuncia-se "cê chárp" em português ou "cí charp" em inglês) é, de certa forma, a linguagem de programação que mais diretamente reflete a plataforma .NET sobre a qual todos os programas .NET executam. C# está de tal forma ligado a esta plataforma que não existe o conceito de código não- gerenciado (unmanaged code) em C#. Suas estruturas de dados primitivas são objetos que correspondem a tipos em .NET. A desalocação automática de memória por garbage colletor além de
  • 25. Programação em C# Prof. MSc. Liluyoud Cury de Lacerda 25 várias de suas abstrações tais como classes, interfaces, delegados e exceções são nada mais que a exposição explicita dos recursos do ambiente .NET. Quando comparada com C e C++, a linguagem é restrita e melhorada de várias formas incluindo:  Ponteiros e aritmética sem checagem só podem ser utilizados em uma modalidade especial chamada modo inseguro (unsafe mode). Normalmente os acessos a objetos é realizada através de referências seguras, as quais não podem ser invalidadas e normalmente as operações aritméticas são checadas contra sobrecarga (overflow).  Objetos não são liberados explicitamente, mas através de um processo de coleta de lixo (garbage collector) quando não há referências aos mesmos, prevenindo assim referências inválidas.  Destrutores não existem. O equivalente mais próximo é a interface Disposable, que juntamente com a construção using block permitem que recursos alocados por um objeto sejam liberados prontamente. Também existem finalizadores, mas como em Java sua execução não é imediata.  Como em Java, só é permitida a herança simples, mas uma classe pode implementar várias interfaces abstratas. O objetivo principal é simplificar a implementação do ambiente de execução.  C# é mais seguro com tipos que C++. As únicas conversões implícitas por default são conversões seguras, tais como ampliação de inteiros e conversões de um tipo derivado para um tipo base. Não existem conversões implícitas entre inteiros e variáveis lógicas ou enumerações. Não existem ponteiros nulos (void pointers) (apesar de referências para Object serem parecidas). E qualquer conversão implícita definida pelo usuário deve ser marcada explicitamente, diferentemente dos construtores de cópia de C++.  A sintaxe para a declaração de vetores é diferente ("int[] a = new int[5]" ao invés de "int a[5]").  Membros de enumeração são colocados em seu próprio espaço de nomes (namespace)  C# não possui modelos (templates), mas C# 2.0 possui genéricos (generics).  Propriedades estão disponíveis, as quais permitem que métodos sejam chamados com a mesma sintaxe de acesso a membros de dados.  Recursos de reflexão completos estão disponíveis Apesar de C# ser freqüentemente tido como similar a Java, existem uma série de diferenças importantes, tais como:  Java não implementa propriedades nem sobrecarga de operadores.  Java não implementa um modo inseguro que permita a manipulação de ponteiros e aritmética sem checagem.  Java possui exceções checadas, enquanto exceções em C# são não checadas como em C++.  Java não implementa o goto como estrutura de controle, mas C# sim.  Java utiliza-se de comentários Javadoc para gerar documentação automática a partir de arquivos fonte. C# utiliza comentários baseados em XML para este propósito.  C# suporta indexadores e delegados. Produtividade e Segurança A nova economia Web – onde os concorrentes estão a apenas um clique de distância – está forçando as empresas a responder aos desafios competitivos mais rapidamente do que nunca. Desenvolvedores são chamados para diminuir tempos de ciclo e produzir revisões mais incrementais de um programa, ao invés de uma única versão monumental.
  • 26. Programação em C# Prof. MSc. Liluyoud Cury de Lacerda 26 C# é projetado com estas considerações em mente. A linguagem é projetada para ajudar os desenvolvedores a fazer mais com um número menor de linhas de código e menos oportunidades de erro. Abraça os padrões emergentes de programação Web O novo modelo para desenvolvimento de aplicações significa que mais e mais soluções requerem o uso de padrões Web emergentes tais como Hypertext Markup Language (HTML), Extensible Markup Language (XML) e Simple Object Access Protocol (SOAP). Ferramentas de desenvolvimento existentes foram desenvolvidas antes da Internet ou quando a Web conforme nós a conhecemos hoje estava na sua infância. Como resultado, elas nem sempre proporcionam a melhor forma de trabalhar com as novas tecnologias Web. Programadores C# podem utilizar um framework extensivo para construção de aplicações na plataforma Microsoft .NET. C# inclui suporte pré-construído para transformar qualquer componente em um serviço Web que pode ser invocado pela Internet – a partir de qualquer aplicação rodando em qualquer plataforma. O que é ainda melhor, o framework dos serviços Web pode tornar os serviços Web existentes iguais a objetos C# nativos para o programador, permitindo assim que os desenvolvedores utilizem os serviços Web existentes com as habilidades de programação orientada a objeto que eles já possuem. Existem mais recursos sutis que tornam o C# uma excelente ferramenta de programação Internet. Por exemplo, o XML está emergindo como a forma padrão de passar dados estruturados pela Internet, que freqüentemente são muito pequenos. Para performance melhorada, C# permite que os dados XML sejam mapeados diretamente em um tipo de dados struct ao invés de uma classe. Esta é uma forma mais eficiente de tratar pequenas quantidades de dados. Elimina erros de programação de alto custo Mesmo os programadores C++ mais experientes podem cometer o mais simples dos erros – esquecer de inicializar uma variável, por exemplo – e freqüentemente estes erros simples resultam em problemas não previstos que podem permanecer não descobertos por longos períodos de tempo. Uma vez que um programa está em uso na produção, pode ser muito custoso corrigir mesmo o mais simples erro de programação. O projeto moderno do C# elimina os erros de programação C++ mais comuns. Por exemplo:  Garbage collection libera o programador da sobrecarga do gerenciamento de memória manual.  Variáveis no C# são inicializadas automaticamente pelo ambiente.  Variáveis são type-safe. O resultado final é uma linguagem que torna bem mais fácil para os desenvolvedores escrever e manter programas que resolvem problemas de negócio complexos. Reduz os custos de desenvolvimento do dia a dia com suporte pré-construído para versioning Atualização de componentes de software é uma tarefa com alta probabilidade de erro. Revisões feitas no código podem alterar não intencionalmente a semântica de um programa existente. Para auxiliar o desenvolvedor neste problema, C# inclui o suporte a versioning na linguagem. Por exemplo, a sobrescrita de método deve ser explícita; ela não pode acontecer de forma inadvertida como no C++ ou Java. Isto ajuda a evitar erros de codificação e preserva flexibilidade de versioning. Um recurso
  • 27. Programação em C# Prof. MSc. Liluyoud Cury de Lacerda 27 relacionado é o suporte nativo para interfaces e herança de interface. Estes recursos habilitam frameworks complexos a serem desenvolvidos e evoluídos com o tempo. Em conjunto, estes recursos tornam mais robusto o processo de desenvolvimento de versões posteriores de um projeto, reduzindo assim os custos gerais de desenvolvimento para as versões sucessivas. Melhor mapeamento entre processos de negócio e implementação Com o alto nível de esforço gasto pelas corporações no planejamento de negócio, é imperativo ter um forte conexão entre os processos abstratos de negócio e a implementação real de software. Mas a maioria das ferramentas de linguagem não possui uma forma fácil de unir lógica de negócio ao código. Por exemplo, os desenvolvedores provavelmente utilizam comentários de código hoje em dia para identificar quais classes formam um objeto de negócio abstrato particular. A linguagem C# permite metadados extensíveis typed que podem ser aplicados a qualquer objeto. Um arquiteto de projeto pode definir atributos específicos de domínio e aplicá-los a quaisquer classes de elemento da linguagem, interfaces e assim por diante. O desenvolvedor pode então examinar via programação os atributos de cada elemento. Isto torna fácil, por exemplo, escrever uma ferramenta automatizada que garantirá que cada classe ou interface está identificada corretamente como parte de um objeto de negócio particular, ou simplesmente criar relatórios com base nos atributos específicos de domínio de um objeto. A forte união entre os metadados customizados e o código do programa ajuda a fortalecer a conexão entre o comportamento pretendido do programa e a implementação real. Interoperabilidade extensiva O ambiente type-safe gerenciado é apropriado para a maioria das aplicações corporativas. Mas a experiência mostra que algumas aplicações continuam a exigir código "nativo", ou por razões de performance ou para interoperar com interfaces de programação de aplicação (APIs) existentes. Estes cenários podem forçar os desenvolvedores a usar C++ mesmo quando eles prefeririam usar um ambiente de desenvolvimento mais produtivo. C# endereça estes problemas da seguinte forma:  Incluindo suporte nativo para o Component Object Model (COM) e APIs baseadas em Windows®.  Permitindo o uso restrito de ponteiros nativos. Com C#, cada objeto é automaticamente um objeto COM. Desenvolvedores não têm mais que implementar explicitamente interfaces IUnknown e outras interfaces COM. Ao invés disto, estes recursos são pré-construídos. De forma similar, programas C# podem usar nativamente objetos COM existentes, independente da linguagem usada para sua criação. Para os desenvolvedores que precisam disto, C# inclui um recurso especial que habilita um programa a chamar qualquer API nativa. Dentro de um bloco de código marcado especialmente, desenvolvedores podem usar ponteiros e recursos C/C++ tradicionais tais como memória gerenciada manualmente e aritmética de ponteiro. Esta é uma enorme vantagem sobre os outros ambientes. Isto significa que programadores C# podem construir sobre sua base de código C e C++ existente, ao invés de descartá-la. Nos dois casos – suporte a COM e acesso API nativo – a intenção é proporcionar ao desenvolvedor o poder e o controle essenciais sem ter que deixar o ambiente C#.
  • 28. Programação em C# Prof. MSc. Liluyoud Cury de Lacerda 28 Bibliotecas de código Ao contrário das outras linguagens de programação, nenhuma implementação de C# atualmente inclui qualquer conjunto de bibliotecas de classes ou funções. Ao invés disso, C# está muito vinculada ao framework .Net, do qual C# obtém suas classes ou funções de execução. O código é organizado em um conjunto de namespaces que agrupam as classes com funções similares. Por exemplo:  System para os tipos e estruturas básicos,  System.Console para aplicações de entrada e saída,  System.Drawing para gráficos,  System.Collections para estrutura de dados e  System.Windows.Forms para o sistema Windows Form.  E muitas outras bibliotecas. Um nível de organização superior é fornecido pelo conceito de montador (assembly). Um montador pode ser um simples arquivo ou multiplos arquivos ligados que podem conter muitos namespaces ou objetos. Programas que precisam de classes para realizar uma função em particular podem se referenciar a montadores como System.Drawing.dll e System.Windows.Forms.dll assim como a biblioteca core (conhecida como mscorlib.dll na implementação da Microsoft).
  • 29. Programação em C# Prof. MSc. Liluyoud Cury de Lacerda 29 ESTRUTURAS DA LINGUAGEM Nesse capítulo, iremos introduzir a linguagem C# básica (sem uso de orientação a objeto) através de alguns exemplos simples. O aluno deve entender, neste momento, que C# é apenas uma outra linguagem de programação, assim como C, Pascal, Basic, Fortran, Cobol. Queremos ver como C# trata:  Tipos básicos  Constantes  Decisões  Laços Veremos também como criar, compilar e executar programas usando o Visual Studio. Observe que não veremos chamadas de sub-programas (subrotinas ou funções) aqui, este assunto é bem diferente em C#, devido à orientação a objeto, e será visto à frente. Importante! Você é responsável por aprender detalhes adicionais da linguagem C#. O que faremos em aula não é uma cobertura completa da linguagem. CRIANDO UMA SOLUÇÃO Nas IDEs mais novas, como o Visual Studio (VS), o conceito de programa é estendido para Projeto de Desenvolvimento, logo, para você criar um programa, deve-se primeiro, criar um Projeto que vai agregar seu sistema. O VS além do conceito de Projetos, tem também o conceito de Solução, que nada mais é do que um conjunto de projetos. No exemplo que vamos dar, vamos criar uma Solução que vai levar seu nome, e vamos dividir essa solução em 3 partes, projetos do tipo Console, do tipo Windows e do Tipo Web. Para tanto: 1. Abra o Visual Studio 2. Selecione o menu File | New | Project
  • 30. Programação em C# Prof. MSc. Liluyoud Cury de Lacerda 30 3. Na área chamada Project Types, vá em Other Project Types | Visual Studio Solutions e selecione Blank Solution. 4. Na área chamada Name coloque seu nome (ou qualquer outro nome que identifique todos os projetos que você irá criar). No meu caso, informei Liluyoud. 5. Na área Location, informe a pasta onde você gostaria que seus projetos fossem criados. No meu caso, informei C:. 6. Em cima da sua Solution, clique com o botão direito do mouse, selecione Add | New Solution Folder para criar uma pasta na Solução.  Crie a pasta chamada Console para aplicações simples e sem interface gráfica  Crie a pasta chamada Windows para aplicações Desktop (baseado em janelas)  Crie a pasta chamada Web para aplicações para Web Apesar de termos criado 3 pastas na solução, essa divisão é lógica apenas. Se você verificar dentro do diretório da solução (no nosso caso C:Liluyoud), você verá que nenhuma pasta foi criada (particularmente acho uma falha do VS). 7. Para que a solução represente exatamente o seu sistema de arquivos, vá no Windows Explorer e crie essas 3 pastas (com o mesmo nome) dentro do diretório criado para sua solução (no nosso caso C:Liluyoud). CRIANDO O PROGRAMA ALO MUNDO
  • 31. Programação em C# Prof. MSc. Liluyoud Cury de Lacerda 31 Para “variar”, nosso primeiro programa será o Alo Mundo. O objetivo principal desse programa não é mostrar a mensagem Alo Mundo para o usuário, o objetivo é apresentar o ambiente de desenvolvimento que você usará, mostrando como se cria um programa (projeto), assim como compilar, executar, salvar e recuperar o mesmo. Como o objetivo dessa sessão é apenas mostrar aspectos da linguagem C#, todos os projetos que criaremos aqui serão do tipo Console e, portanto estarão dentro da pasta Console. Um programa do tipo Console é um programa que não apresenta interface gráfica, não contém janelas ou qualquer outro componente visual, apenas lógica de programação. Para criá-lo, basta seguir os seguintes passos: 1. Selecione a pasta Console 2. Clique com o botão direito do mouse em cima da pasta Console 3. Selecione Add | New Project 4. Na área Project Types, selecione Visual C# | Windows 5. Na área Templates, selecione Console Application 6. Na área Name, informe o nome Alo 7. Na área Location, informe o diretório da sua Solução com a subpasta Console (no nosso caso, C:LiluyoudConsole). 8. Clique no botão OK para criar o projeto.
  • 32. Programação em C# Prof. MSc. Liluyoud Cury de Lacerda 32 Depois de criado o projeto, o Solution Explorer se parecerá com a figura ao lado, onde:  Um projeto chamado Alo foi criado dentro da pasta Console que pertence a solução Liluyoud.  O projeto Alo tem duas pastas chamadas Properties e References (cujos objetivos serão abordadas quando necessário).  O projeto Alo tem um arquivo chamado Program.cs que identifica um código fonte em C# (a extensão .cs se dá devido ao C Sharp). No conteúdo do arquivo Program.cs está definido uma classe. Agora para criar o programa Alo Mundo, vamos digitar o código de acordo com o mostrado abaixo. As particularidades do código são mostradas pelos balões e explicadas prontamente. Mais informações sobre essa estrutura serão abortadas posteriormente nessa apostila. 1. A cláusula using define quais bibliotecas de classe o programa irá usar. Equivale a clausula imports do Java. Dificilmente usamos, pois as principais bibliotecas já são importadas automaticamente. 2. A cláusula namespace define o espaço de nomes do seu programa. É usado para dividir logicamente os módulos de seu sistema. Por padrão o namespace tem o mesmo nome do projeto, mas pode-se mudar para atender suas especificações. Veremos mais detalhes sobre namespaces quando trabalharmos com uma aplicação um pouco mais complexa. 3. Todo programa Orientado a Objetos tem classes definidas (mais detalhes na sessão de Orientação a Objetos dessa apostila). Quando criamos um projeto, é criada uma classe padrão chamada Program, que identifica o ponto inicial de execução de uma aplicação (Console ou Windows). Perceba que a classe tem o mesmo nome do arquivo criado para identificá-la, por padrão o nome é Program. Você pode renomear a classe sem problemas, mas não esqueça de renomear o arquivo também. 4. Na classe Program temos um método (conceito a ser abordado na Orientação a Objetos) chamado Main que identifica a primeira ação a ser executada pelo programa. Logo, se quisermos que o programa execute alguma ação primeiramente, basta colocar os comandos dentro desse método que são delimitados por { e }. 1 4 5 6 2 3
  • 33. Programação em C# Prof. MSc. Liluyoud Cury de Lacerda 33 Os comandos colocados dentro do métodos são dois: 5. Console.WriteLine ( ): é um comando que permite escrever qualquer informação no Console de saída do programa, que nesse caso é o monitor por padrão. Esse comando pode nesse programa escreverá uma palavra que é delimitada por aspas duplas, que no exemplo é “Alo Mundo!”. 6. Console.ReadLine ( ): é um comando que permite ler qualquer informação do Console de Entrada do programa, que nesse caso é o teclado do usuário por padrão. Mas nesse programa ele é usado para outro objetivo que é esperar o usuário digitar alguma coisa para poder finalizar o programa. Fazemos isso nesse caso, porque senão o programa será executado tão rápido que não conseguiremos visualizar a saída do mesmo.. ESTRUTURAS BÁSICAS Antes de começarmos a criar algoritmos complexos, vamos conhecer algumas estruturas simples que são usadas no C# (assim como em outras linguagens, mas com sintaxe diferente) que são:  Comentários  Blocos de comandos  Variáveis e seus Tipos  Conversão de Tipos  Comandos de Escrita e Leitura Comentários Criar comentários em seu código fonte é muito importante, já que possibilita um entendimento melhor dos algoritmos ali implementados. Os comentários na hora da compilação são ignorados, por isso você pode usar (e não abusar) deles.  Podemos usar comentários para:  Identificar o responsável e data de criação daquele código  Identificar todas as alterações feitas no código, seus responsáveis e datas de alteração  Identificar o objetivo daquele código  Explicar de maneira mais fácil a lógica de seu algoritmo  Entre muitos outros, inclusive para a documentação profissional de seu código fonte através de marcadores XML (semelhante ao mecanismo javadoc do Java). Os tipos de comentários são:  /* */ : Textos delimitados por essa seqüência de caracteres ficam todos comentados mesmo que o texto contenha mais de uma linha.  // : Texto com essa seqüência de caracteres na frente dele viram comentário de uma única linha  /// : Texto com essa seqüência de caracteres na frente dele viram comentário para documentação XML Para mostrar a funcionalidade da documentação de seu código inserindo esses 3 tipos de comentários, vamos alterar o programa Alo Mundo:
  • 34. Programação em C# Prof. MSc. Liluyoud Cury de Lacerda 34 /* Programa Alo Mundo * Autor: Lilluyoud Cury de Lacerda * Data de Criação: 27/03/2007 * * Objetivo: Criar um programa para mostrar uma mensagem na tela */ using System; using System.Collections.Generic; using System.Text; namespace Alo { /// <summary> /// A classe Program é uma classe criada automaticamente pelo VS e serve /// para executar o programa a ser desenvolvido /// </summary> class Program { /// <summary> /// Método que define quais acões serão executados primeiramente /// quando o programa for executado /// </summary> /// <param name="args">Um conjunto de parâmetros do tipo string que podem ser /// passados ao programa /// </param> static void Main(string[] args) { // Escreve Alo Mundo! no monitor Console.WriteLine("Alo Mundo!"); // Espera que o usuário tecle algo para finalizar a execução do progama Console.ReadLine(); } } } Blocos de Comando Todos os comandos em C# tem que terminar com um ponto-e-vírgula ( ; ) e esses comandos tem que estar delimitados por um bloco que tem início e fim, representados no C# pelos caracteres abre-chaves ( { ) que define o início do bloco e fecha-chaves ( } ) que define o fim do bloco. O namespace precisa ser delimitado com um início e fim, no caso com { e }, assim como o classe e o método Main. Outras estruturas també precisam ser delimitadas, e que serão vistas ao longo da apostila. Por essa delimitação sabemos que a o método Main está dentro da classe Program que esta dentro do namespace Alo. Por padrão o Visual Studio fecha as chaves na mesma coluna onde ela foi aberta, mas podemos configurar para o padrão usado no Java, onde abrimos as chaves logo após o comando que abre ela e fechamos a mesma coluna que o comando foi iniciado, como exemplo: Modelo padrão do C# Modelo padrão do Java namespace Alo { class Program { static void Main(string[] args) { } } } namespace Alo { class Program { static void Main(string[] args) { } } }
  • 35. Programação em C# Prof. MSc. Liluyoud Cury de Lacerda 35 A endentação em ambos os casos é importantíssimo, onde um bloco de comando que esteja dentro de outro bloco, deve estar alinhado pelo menos com 3 espaços para dentro (ou um tab como usado no VS). Variáveis e Tipos de Dados Uma variável consiste em um elemento ao qual lhe damos um nome e lhe atribuímos um determinado tipo de informação, quer dizer, variáveis são estruturas que possibilitam armazenar valores e serem modificados e recuperados a contento. As variáveis podem ser consideradas como a base da programação. Deste modo poderíamos escrever em uma linguagem fictícia: a = "C# " b = "é fácil" A variável que nós chamamos "a" possui um elemento de informação de tipo texto que é "cachorro". Assim como, a variável "b" contém o valor "morde". Poderíamos definir uma terceira variável que fosse a soma destas duas: c = a + b Se introduzíssemos uma petição de impressão desta variável em nossa linguagem fictícia: imprimir(c) O resultado poderia ser: C# é facil Poderíamos da mesma forma trabalhar com variáveis que contivessem números: a = 3 b = 4 c = a + b imprimir(c) O resultado de nosso programa seria: 7 Como podemos observar, as variáveis tem um tipo que podem ser alem de números e textos, tipos booleanos, vetores, tipos complexos (classes na Orientação a Objetos), entre outros. Além disso, percebe-se que valores textuais são delimitados por aspas duplas, já valores numéricos não precisam. Em ciência da computação tipos de variáveis ou dados é um nome para uma combinação de valores e de algumas operações que uma variável pode executar, podem variar conforme o sistema operacional e a linguagem de programação e são utilizados para indicar ao compilador ou interpretador as conversões necessárias para obter os valores em memória durante a construção do programa. Por outro lado, ajudam também o programador a detectar eventuais erros.
  • 36. Programação em C# Prof. MSc. Liluyoud Cury de Lacerda 36 Dependendo da linguagem de programação o tipo de um dado é verificado diferentemente, de acordo com a análise léxica, sintática e semântica do compilador ou interpretador da linguagem. Os tipos têm geralmente associações com valores na memória ou com objetos (para uma linguagem orientada a objeto) ou variáveis. Tipos de dados primitivos são tipos que tem tamanho fixo e sempre apresentam um valor padrão, além de serem armazenados na pilha do programa para acesso rápido. Os tipos primitivos do C# são: Tipo Tamanho Mínimo Máximo Valor padrão bool 1 bit - - False char 16 bits Unicode 0 Unicode 216 - 1 u0000 byte 8 bits 0 255 0 short 16 bits -215 +215 - 1 0 int 32 bits -231 +231 -1 0 long 64 bits -263 +263 - 1 0 float 32 bits 1EEE754 1EEE754 0.0 double 64 bits 1EEE754 1EEE754 0.0 O tipo string não é primitivo pois não tem tamanho fixo e tem operações específicas associada a ela (string é uma classe). O tipo string serve para armazenar qualquer texto no padrão Unicode. Em C# para se declarar uma variável primeiro temos que definir o tipo para depois definir o nome da variável e opcionalmente, iniciá-la com algum valor. Sintaxe: TipoDeDado nomeDdaVariável [= valorInicial]; Exemplo: // declaração de uma variável do tipo int (inteiro) com o nome de idade int idade; Ou // declaração de uma variável do tipo int (inteiro) com o nome de idade e iniciada com // o valor 20 int idade = 20; Caso tenhamos duas variáveis do mesmo tipo, podemos declarar as duas ao mesmo tempo, apenas separando-as por vírgulas: double nota1, nota2, media; nota1 = 8; nota2 = 7; media = (nota1 + nota2) / 2; Ou double nota1 = 8, nota2 = 7, media = (nota1 + nota2) / 2; Quanto a nomenclatura das variáveis, o padrão recomendado (não é obrigatório) é:  Nomes de variáveis não podem abreviadas e devem fornecer um sentido completo Certo: int quantidade; Errado: int qtd;  Nomes de variáveis devem começar com letra minúscula, e caso o nome seja composto de duas palavras ou mais, cada nome deve subseqüente ao primeiro deve iniciar com letra maiúscula. Certo: string telefoneComercial; Errado: string TelefoneComercial, telefonecomercial;
  • 37. Programação em C# Prof. MSc. Liluyoud Cury de Lacerda 37 As variáveis em C# são estáticas (assim como em Java, Pascal, entre outros), isto é, não podem ter tipo de dados modificado na sua execução (como o phyton, php etc..., que tem tipos dinâmicos). No modelo estático, uma variável do tipo numérica em nenhum momento pode receber outro tipo de informação a não ser tipos numéricos. Já as variáveis dinâmicas podem mudar seu tipo de informação ao longo da execução de um programa. Variáveis Estáticas Variáveis dinâmicas nota = 10 ... nota = “5” // esse código da erro, como a // variável é numérica, só pode // atribuir valores numéricos a ela nota = 10 ... nota = “5” // esse código não da erro, a variável // de numérica vira textual Outra característica importante também é a necessidade de se declarar uma variável e seu tipo previamente (como C# e Java) ou apenas usar uma variável e deixar que o compilador atribua em modo de execução o tipo da mesma (VBScript, PHP, Phyton, etc...). No primeiro caso damos o nome de Linguagem Fortemente Tipada e no outro respectivamente, de Linguagem Fracamente Tipada. Linguagem Fortemente Tipada Linguagem Fracamente Tipada int nota nota = 10 media = 7 // esse código da erro, pois a // variável média não foi declarada nota = 10 media = 7 // esse código não da erro, pois não // é necessário declarar a variável // previamente A seguir temos alguns exemplos de declarações de variáveis. char c = 'a'; char z = 'u0041'; // em unicode int i = 10; short s = 1; byte b = 2; long hexa = 0x3abe5L; int octal = 0127; float f = 0.32f; double d = 12.535; double g = .1e-23; bool verdadeiro = true; bool falso = false; string palavra = "Oi pessoal"; Conversão de Tipos Apesar do C# ser baseado em variáveis estáticas, é possível converter os tipos de dados de uma variável, desde que essa conversão seja possível, por exemplo:  É possível converter qualquer tipo primitivo para string mas nem sempre é possível o contrario  Um string que representa um número pode ser convertido para um tipo numérico, caso não represente, a conversão gerará uma exceção.  Um numero pode sempre ser convertido para um número com mais bits, exemplo, um tipo byte (8 bits) pode ser convertido para um do tipo int (32 bits).  O contrário nem sempre é possível (de um tipo com mais bits para representá-lo para um com menos bits), desde que o valor não exceda o limite do tipo menor, a conversão ocorrerá sem problemas, senão, haverá uma exceção (erro) na execução.
  • 38. Programação em C# Prof. MSc. Liluyoud Cury de Lacerda 38 Nas conversões que sempre poderão acontecer, o mesmo é feito automaticamente, sem precisar “forçar” nenhuma dessas conversões. Logo é possível converter sem problemas (automaticamente) os tipos:  De byte, short, int, long, float, double, char, bool para string  De byte para short, de short para int, de int para float, de float para Double Mas pode ocorrer problemas na conversão dos tipos:  De Double para float, long para int, de int para short, de short para byte  De uma string para um tipo numérico Esses tipos de conversões tem que ser feita de forma explícita, e no C# existem algumas formas de se fazer isso. A mais simples é usando a classe Convert. Essa classe implementa vários métodos que permite a conversão de qualquer tipo para outro, desde que essa conversão seja possível. Por exemplo, temos: // converte uma string que representa o valor 123 para o tipo byte byte numero8bits = Convert.ToByte("123"); // converte uma string que representa o valor 1024 para o tipo short short numero16bits = Convert.ToInt16("1024"); // converte uma string que representa o valor 34123 para o tipo int int numero32bits = Convert.ToInt32("34123"); // converte uma string que representa o valor 123123.12455 para o tipo double double numeroReal64bits = Convert.ToDouble("123123.12455"); // converte o número 123 para uma string string palavra1 = Convert.ToString(123); // outra maneira de converter o número 123 para uma string string palavra2 = 123.ToString(); Comandos de Escrita e Leitura Como vamos trabalhar primeiramente com programas não visuais, isto é, aplicações do tipo Console, é importante aprendermos uma maneira de ler informações do usuário e também enviar. Para tanto, o C# implementa alguns métodos dentro da classe Console que faz parte do espaço de nomes (namespace) chamado System. Para escrever alguma informação na tela podemos usar esses dois comandos: Console.WriteLine( informação ); Console.Write( informação ); Onde  WriteLine é usado para escrever um dado e pular uma linha  Write é usado para escrever um dado e não pular uma linha  Informação é qualquer valor, sejam valores numéricos, textos ou uma concatenação entre eles.
  • 39. Programação em C# Prof. MSc. Liluyoud Cury de Lacerda 39 Para ler alguma informação do usuário, podemos usar o comando: variável = Console.ReadLine(); Onde  Variável pode ser de qualquer tipo  ReadLine lê uma informação do usuário e essa informação sempre é do tipo string, caso queira mudar o tipo, é necessário usar o Convert. Exemplo Para explicar melhor o conceito de variáveis, leitura e escrita, vamos implementar um projeto cujo objetivo é ler o nome de um aluno, ler as notas de duas provas e depois mostrar o nome é a média do aluno: 1. Abra o Visual Studio 2005 2. Na área Recent Projects selecione a solução que você criou no exercício anterior (no nosso caso é a Solução Liluyoud) 3. Ao abrir sua solução, selecione a pasta Console 4. Com o botão direito do mouse, clique em cima da pasta e selecione o item de menu Add | New Project...
  • 40. Programação em C# Prof. MSc. Liluyoud Cury de Lacerda 40 5. Assim como no projeto anterior, selecione na área de Templates o tipo Console Application. 6. Na área Name informe o nome do projeto que será Estruturas Básicas. 7. Na área Location informe o local onde você deseja armazenar seu novo projeto, que é o local onde sua solução foi criada e dentro da pasta Console ( no nosso caso seria C:LiluyoudConsole ). Agora a pasta Console da nossa Solução contem dois projetos, o Alo e o Estruturas Básicas. Entretanto em uma solução, apenas um projeto pode estar ativo, e que no caso, é o projeto anterior ( o Alo). O projeto ativo é o projeto que será iniciado quando você quiser compilar e executar um programa. Como vamos trabalhar com o projeto recém criado, para mudar o projeto ativo da solução, precisamos: 8. Selecione o projeto que deseja ser o ativo (padrão) 9. Com o botão direito do mouse, clique no projeto e selecione a opção Set as StartUp Project. Pronto, agora seu novo projeto será compilado e executado. Agora precisamos apenas implementar um algoritmo que resolva o problema proposto. Esse algoritmo, por enquanto, tem que estar definido dentro do método Main. A seguir temos um modelo de solução para o problema.
  • 41. Programação em C# Prof. MSc. Liluyoud Cury de Lacerda 41 using System; using System.Collections.Generic; using System.Text; namespace Basico { class Program { static void Main(string[] args) { // declaração das variáveis string aluno; double nota1, nota2; // lendo as informações do usuário Console.Write("Informe o nome do Aluno: "); aluno = Console.ReadLine(); Console.Write("Informe a 1a nota: "); nota1 = Convert.ToDouble(Console.ReadLine()); Console.Write("Informe a 2a nota: "); nota2 = Convert.ToDouble(Console.ReadLine()); // fazendo os cálculos double media = (nota1 + nota2) / 2; // criando uma saida com o resultado Console.WriteLine("-----------------------"); Console.WriteLine("O aluno {0} tirou as notas {1} e {2}", aluno, nota1, nota2); Console.WriteLine("Sua média é {0}", media); // esperando o usuário clicar para sair do programa Console.ReadLine(); } } } ESTRUTURAS DE DECISÃO O C# assim como outras linguagens apresentam diversas estruturas que controla a execução (fluxo e comportamento) de um programa. Dentre elas podemos citar as estruturas de decisão permitem que
  • 42. Programação em C# Prof. MSc. Liluyoud Cury de Lacerda 42 escolhamos qual parte do código será executado dado uma expressão booleana (que pode ter como resultado, apenas dois valores: verdadeiro ou falso). if – else if - else Um exemplo de estrutura de decisão é a estrutura IF (SE), que serve para mudar o fluxo da execução de um programa dado uma expressão booleana. A maioria dos programas tomam decisões que afetam seu fluxo. As declarações que tomam essas decisões são chamadas de declarações de controle. Sintaxes: if sem chaves if com chaves if (expressao booleana) comando; Obs: Usando quando temos apenas um comando fazendo parte do if if (expressao booleana) { comando 1; comando 2; ... comando n; } Obs: Usando quando temos vários comandos fazendo parte do if if - else sem chaves if com chaves if (expressao booleana) comando1; else comando2; Obs: onde comando1 será somente executado se a expressão booleana for verdadeiro, e caso for falso será executado o comando2 if (expressao booleana) { comandos bloco 1; ... } else { comandos bloco 2; ... } Obs: onde os comandos do bloco 1 serão somente executados se a expressão booleana for verdadeiro, e caso for falso será executado os comandos do bloco 2 if – else if – else if (expressao booleana 1) { comandos bloco 1; ... } else if (expressao booleana 2){ comandos bloco 2; ... } else if ... { ... } else if (expressao booleana n){ comandos bloco n; ... } else { comandos bloco else; ... } Onde: Os comandos do bloco 1 serão somente executados se a expressão booleana 1 for verdadeira; Os comandos do bloco 2 serão somente executados se a expressão booleana 2 for verdadeira; Os comandos do bloco n serão somente executados se a expressão booleana n for verdadeira; Os comandos do bloco else serão somente executados se nenhuma expressão booelana anterior for verdadeira. O uso de chaves é obrigatório quando se quer que mais de um comando seja executado quando uma expressão é verdadeira ou não. Caso o fluxo seja direcionado para apenas um comando, a chaves não se faz necessária. As chaves delimitam blocos de comando, similiar ao Inicio...Fim usando nos algorítimos.
  • 43. Programação em C# Prof. MSc. Liluyoud Cury de Lacerda 43 switch O comando switch existe nas principais linguagens de programação (C, C++, Java, C#). Seu propósito é permitir que o valor de uma variável ou expressão controle o fluxo de execução do programa. Sintaxe: O comando deve começar com a palavra reservada switch, e cada bloco de execução deve conter a palavra reservada case acompanhada do valor que a variável de controle deve ter. Para finalizar o bloco, devemos usar o comando break. Switch switch ( expressão ) { case valor1: comandos; break; case valor2: comandos; break; ... case valorN: comandos; break; default: comandos; break; } Onde: Os comandos relacionados ao case valor1 serão somente executados se o valor da expressão for igual ao valor1; Os comandos relacionados ao case valor2 serão somente executados se o valor da expressão for igual ao valor2; Os comandos relacionados ao case valorN serão somente executados se o valor da expressão for igual ao valorN; Os comandos do bloco default serão somente executados se nenhuma expressão tiver um valor definido na estrutura case. Exemplo Para explicar melhor o conceito de estruturas de decisão, vamos implementar um programa cujo objetivo é similar ao exercício anterior, sendo que este irá mostrar se o aluno passou por média (média maior ou igual a 6), vai pra final ou reprovou de vez (média menor que 3). Para os alunos que passaram por média, o programa ainda definirá um conceito para aquele aluno:  A+ para média 10  A para média 9  para média 8  B para média 7 1. Abra o Visual Studio 2005 2. Na área Recent Projects selecione a solução que você criou no exercício anterior (no nosso caso é a Solução Liluyoud)
  • 44. Programação em C# Prof. MSc. Liluyoud Cury de Lacerda 44 3. Ao abrir sua solução, selecione a pasta Console 4. Com o botão direito do mouse, clique em cima da pasta e selecione o item de menu Add | New Project... 5. Assim como no projeto anterior, selecione na área de Templates o tipo Console Application. 6. Na área Name informe o nome do projeto que será Estruturas de Decisão. 7. Na área Location informe o local onde você deseja armazenar seu novo projeto, que é o local onde sua solução foi criada e dentro da pasta Console ( no nosso caso seria C:LiluyoudConsole ). Não se esquecendo de colocar o projeto atual como projeto padrão (Set as Startup Project, visto no exemplo anterior). Agora precisamos apenas implementar um algoritmo que resolva o problema proposto. Esse algoritmo, por enquanto, tem que estar definido dentro do método Main. A seguir temos um modelo de solução para o problema. using System; using System.Collections.Generic; using System.Text; namespace Decisao { class Program {
  • 45. Programação em C# Prof. MSc. Liluyoud Cury de Lacerda 45 static void Main(string[] args) { // declaração das variáveis string aluno; double nota1, nota2; // lendo as informações do usuário Console.Write("Informe o nome do Aluno: "); aluno = Console.ReadLine(); Console.Write("Informe a 1a nota: "); nota1 = Convert.ToDouble(Console.ReadLine()); Console.Write("Informe a 2a nota: "); nota2 = Convert.ToDouble(Console.ReadLine()); // fazendo os cálculos double media = (nota1 + nota2) / 2; // verificando a situação do aluno if (media >= 6) { Console.Write("Aluno Aprovado "); // para trabalhar com switch precisamos usar numeros inteiros // e por isso arredondamos a varíavel média int conceito = (Int32)Math.Round(media); switch (conceito) { case 10: Console.WriteLine("com conceito A+"); break; case 9: Console.WriteLine("com conceito A+"); break; case 8: Console.WriteLine("com conceito A+"); break; default: Console.WriteLine("com conceito satisfatório"); break; } } else if (media >= 3) { Console.WriteLine("Aluno para Prova Final"); } else { Console.WriteLine("Aluno Reprovado"); } // esperando o usuário clicar para sair do programa Console.ReadLine(); } } } Como exemplo, temos a seguinte saída de execução do programa: ESTRUTURAS DE REPETIÇÃO
  • 46. Programação em C# Prof. MSc. Liluyoud Cury de Lacerda 46 O C# assim como outras linguagens apresentam diversas estruturas que permitem a execução de um comando ou um bloco de comandos mais de uma vez (ou nenhuma em alguns casos), controlando o fluxo de execução de um programa. Esse fluxo de execução é controlado por uma expressão booleana, por isso, uma estrutura de repetição é normalmente é composto por essa expressão mais um comando ou um bloco de comandos. No caso, a expressão booleana - chamada de expressão de controle ou condição de parada - será avaliada e, se for verdadeira, o comando será executado, caso contrário, o fluxo de repetição será parado. Deve-se observar que, caso o comando - ou bloco de comandos - executado dentro de uma estrutura de repetição não altere nenhum dos elementos da expressão de controle, a repetição será infinita. Não é incomum especificar-se, como expressão de controle do, uma expressão que sempre seja verdadeira, tornando a repetição infinita um efeito desejado. Nesses casos, ou há uma outra estrutura de controle dentro dos comandos a serem repetidos que terminará o laço de repetição - tal como um comando break - ou o programa controla um conjunto de ações que realmente deverá ser executado ininterruptamente - como um sistema operacional ou um programa de controle de um dispositivo portátil, por exemplo. Existem 3 tipos clássicos de estruturas de repetição descritos a seguir: for No comando for, podemos dizer que o(s) comando(s) será(ao) executado(s) por uma quantidade pré- definida de vezes, utilizando-se pra isso, um contador interno, inicializado previamente, que será modificado a cada iteração do comando for. A execução da estrutura for então está vinculada a esse contados, executando o(s) comandos enquanto a expressão booleana, que envolve o contador, for verdadeiro, ou parando a execução caso ele seja falso. Sintaxe: for for (VI; CP; INC) comando; ou for (VI; CP; INC) { comandos; } Onde: VI é nde o contador é iniciado com um Valor Inicial; CP é Condição de Parada que nada mais é do que uma expressão booleana (ou expressão de controle) que envolve o contador iniciado e que controlará a execução ou não dos comandos; INC é o local onde o contador é modificado, pode ser INCrementado ou diminuído ao longo das iterações do comando for. while No comando while, podemos dizer que o(s) comando(s) será(ao) executado(s) enquanto a expressão for verdadeira - daí derivando o nome do comando while. O fato de a expressão ser avaliada antes de o comando ser executado caracteriza o comando while como sendo um repetitivo pré-testado, diferenciando-o de comandos repetitivos pós-testados, tais como o do-while. Como o while é uma estrutura de repetição pré-testado, pode acontecer que os comandos definidos no bloco de comandos possam não ser executados.
  • 47. Programação em C# Prof. MSc. Liluyoud Cury de Lacerda 47 Sintaxe: while while (CP) comando; ou while (CP) { comandos; } Onde: CP é Condição de Parada que nada mais é do que uma expressão booleana (ou expressão de controle) que controlará a execução ou não dos comandos da estrutura while; do... while No comando do...while, podemos dizer que o(s) comando(s) será(ao) executado(s) enquanto a expressão for verdadeira - daí derivando o nome do comando while. O fato de a expressão ser avaliada depois de o comando ser executado (usando-se o comando do – faça - antes do while) caracteriza o comando como sendo um repetitivo pós-testado, onde sempre pelo menos uma vez os comandos definidos no bloco de comandos serão executados. Sintaxe: do...while do comando; while (CP) ou do { comandos; } while (CP) Onde: CP é Condição de Parada que nada mais é do que uma expressão booleana (ou expressão de controle) que controlará a execução ou não dos comandos da estrutura do...while; Exemplo Para explicar melhor o conceito de estruturas de repetição, vamos implementar um programa cujo objetivo é criar um menu de execução que sempre será mostrado enquanto o usuário não digitar 0. Caso ele digitar 1 o programa deverá mostrar a tabuada de 1 a 9 e caso ele digite 2, o programa mostrará a soma de todos esses números da tabuada.
  • 48. Programação em C# Prof. MSc. Liluyoud Cury de Lacerda 48 1. Abra o Visual Studio 2005 2. Na área Recent Projects selecione a solução que você criou no exercício anterior (no nosso caso é a Solução Liluyoud) 3. Ao abrir sua solução, selecione a pasta Console 4. Com o botão direito do mouse, clique em cima da pasta e selecione o item de menu Add | New Project... 5. Assim como no projeto anterior, selecione na área de Templates o tipo Console Application. 6. Na área Name informe o nome do projeto que será Estruturas de Decisão. 7. Na área Location informe o local onde você deseja armazenar seu novo projeto, que é o local onde sua solução foi criada e dentro da pasta Console ( no nosso caso seria C:LiluyoudConsole ).
  • 49. Programação em C# Prof. MSc. Liluyoud Cury de Lacerda 49 Não se esquecendo de colocar o projeto atual como projeto padrão (Set as Startup Project, visto no exemplo anterior). Agora precisamos apenas implementar um algoritmo que resolva o problema proposto. Esse algoritmo, por enquanto, tem que estar definido dentro do método Main. A seguir temos um modelo de solução para o problema. using System; using System.Collections.Generic; using System.Text; namespace Repeticao { class Program { static void Main(string[] args) { int opcao; do { Console.WriteLine("nn[1] - Mostrar Tabuada"); Console.WriteLine("[2] - Somar Tabuada"); Console.WriteLine("[0] - Sair do Programa"); Console.Write("Selecione uma opcao -> "); opcao = Convert.ToInt32(Console.ReadLine()); switch (opcao) { case 1: for (int i = 1; i < 10; i++) { Console.WriteLine("{0}t{1}t{2}t{3}t{4}t{5}t{6}t{7}t{8}", 1*i, 2*i, 3*i, 4*i, 5*i, 6*i, 7*i, 8*i, 9*i); } break; case 2: int j = 1, soma = 0; while (j < 10) { soma = 1*j + 2*j + 3*j + 4*j + 5*j + 6*j + 7*j + 8*j + 9*j; j++; } Console.WriteLine("A soma da tabuada e {0}", soma); break; } } while (opcao != 0); Console.WriteLine("Programa terminado"); Console.ReadLine(); } } }
  • 50. Programação em C# Prof. MSc. Liluyoud Cury de Lacerda 50 Como exemplo, temos a seguinte saída de execução do programa: SUBPROGRAMAS Em ciência da computação , uma subprograma (função ou procedimento) são códigos incluídos dentro de programas de computador e relativamente independente do resto do código do programa. Maurice Wilkes, Stanley Gill e David Wheeler são os inventores de subprogramas. Elas ajudam a estruturar o código de forma organizada e simples, e fundamentam a estrutura de todo software em tempo de desenvolvimento. Um subprograma é frequentemente uma função chamada diversas vezes em diferentes momentos do programa, geralmente mais utilizada para programação estruturada, que distinguem funções, e procedimentos, outras linguagens como linguagem C e LISP não as distinguem. Na orientação a objetos os subprogramas são chamados de métodos, onde procedimentos são métodos que tem o tipo de retorno void e funções são métodos que tem um tipo de retorno diferente de void. Subprogramas que são muito utilizadas em programas são incluídas da biblioteca padrão da linguagem. Como utilizamos uma linguagem orientada a objetos, o C#, o que são definidos no programa são métodos, que serão explicados com mais detalhes no próximo capítulo, específico para Orientação a Objetos. Como forma de explanação apenas, vamos definir por cima a sua sintaxe e forma de utilização. Sintaxe: Métodos sem retorno public static void Nome(Parâmetros) { } Onde: Nome é o nome do método Parâmetros é uma lista separado por vírgula (que pode ser vazia) contendo todas as variáveis (nome e tipo) a serem passadas ao método Métodos com retorno public static Tipo Nome(Parâmetros) { ... return Tipo; } Onde: Tipo é o tipo de retorno a ser passado pelo método (pode ser um número, um texto, e até mesmo um objeto).
  • 51. Programação em C# Prof. MSc. Liluyoud Cury de Lacerda 51 Nome é o nome do método Parâmetros é uma lista separado por vírgula (que pode ser vazia) contendo todas as variáveis (nome e tipo) a serem passadas ao método