You are on page 1of 51

APOSTILA DE PROGRAMAO EM C#

PROF. MSC. LILUYOUD CURY DE LACERDA

Programao em C# CONTEDO

Pr-requisitos: .......................................................................................................................................................................................... 4 DVD de Acompanhamento .............................................................................................................................................................. 4 Instalao .................................................................................................................................................................................................... 5 Instalao do Servidor Web (IIS) ................................................................................................................................................. 5 Instalao 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 Aplicao em modo de Design ................................................................................................................................................ 21 Aplicao em modo de Codificao ...................................................................................................................................... 22 A linguagem C#....................................................................................................................................................................................... 23 Histria da Linguagem ................................................................................................................................................................... 23 Criao do Nome .......................................................................................................................................................................... 24 Normalizao ................................................................................................................................................................................. 24 Poltica .............................................................................................................................................................................................. 24 Caractersticas.................................................................................................................................................................................... 24 Produtividade e Segurana ...................................................................................................................................................... 25 Abraa os padres emergentes de programao Web ................................................................................................. 26 Elimina erros de programao de alto custo .................................................................................................................... 26 Reduz os custos de desenvolvimento do dia a dia com suporte pr-construdo para versioning ............. 26 Melhor mapeamento entre processos de negcio e implementao ..................................................................... 27 Interoperabilidade extensiva .................................................................................................................................................. 27 Bibliotecas de cdigo .................................................................................................................................................................. 28 Estruturas da linguagem .................................................................................................................................................................... 29 Criando uma Soluo....................................................................................................................................................................... 29 Criando o Programa Alo Mundo ................................................................................................................................................. 30 Estruturas bsicas ............................................................................................................................................................................ 33 Comentrios ................................................................................................................................................................................... 33 Prof. MSc. Liluyoud Cury de Lacerda

Programao em C#

Blocos de Comando ..................................................................................................................................................................... 34 Variveis e Tipos de Dados ...................................................................................................................................................... 35 Converso de Tipos ..................................................................................................................................................................... 37 Estruturas de Controle ................................................................................................................................................................... 41

Prof. MSc. Liluyoud Cury de Lacerda

Programao em C# PR-REQUISITOS:

Para o bom andamento do curso e para que o aluno possa testar os programas aqui desenvolvidos fazse necessrio ter um mnimo 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 Rgido. 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 diretrio onde se encontra a instalao do Ajax para .NET (Web 2.0). Apostilas o diretrio onde se encontra algumas apostilas que envolvem .NET. Componentes o diretrio onde se encontra algumas sutes de componentes para .NET (verses Trials). SQL Server o banco de dados gratuito da Microsoft que totalmente integrado ao Visual Studio. Vdeos o diretrio onde se encontra alguns tutoriais em vdeo da plataforma .NET. Visual Studio o diretrio onde se encontra o Ambiente de desenvolvimento para o .NET Framework (verso trial de 180 dias). DotNet Framework.exe o arquivo de instalao da a plataforma de desenvolvimento .NET. Visual Studio SP1.exe o arquivo de instalao do Service Pack 1 do Visual Studio.

Prof. MSc. Liluyoud Cury de Lacerda

Programao em C# INSTALAO

Para preparar um ambiente integrado de desenvolvimento completo baseado em .NET, tanto para Windows quanto para Web, temos que seguir os seguintes passos: Instalao do servidor web, no caso o IIS Instalao do .NET Framework Instalao do Visual C# (com ou sem banco de dados dependendo da sua mquina) Instalao do Visual Web Developer Instalao do Visual Studio Service Pack 1 Instalao do Ajax Instalao de Componentes Adicionais

INSTALAO DO SERVIDOR WEB (IIS)


O IIS (Internet Information Services) um servidor web criado pela Microsoft para seus sistemas operacionais possuindo um conjunto integrado de servios de rede que permite publicar contedo e disponibilizar arquivos e aplicaes em ambientes Internet/Intranet/Extranet, totalmente integrado ao sistema operacional e dotado de uma interface administrativa 100% grfica, o IIS uma das melhores opes disponveis para hospedagem de web sites, site FTP e grupos de notcias, bem como o desenvolvimento de aplicaes para Web. Sua primeira verso foi introduzida com o Windows NT Server verso 4, e passou por vrias atualizaes. As ltimas verses disponveis so: IIS 5.0 para Windows XP IIS 6.0 para Windows 2003 IIS 7.0 para Windows Vista e 2003.

Uma de suas principais caractersticas a gerao de pginas HTML dinmica como o ASP (Active Server Pages) e ASPX (evoluo do ASP), mas tambm pode usar outras tecnologias com adio de mdulos de terceiros. Depois do lanamento da plataforma .NET em 2002 o IIS ganhou tambm a funo de gerenciar o ASP.NET. Este formado basicamente por dois tipos de aplicaes: Pginas Web: Pginas tradicionais acessadas por usurios, contm a extenso ASPX Web Services: Funes disponibilizadas pela rede, chamada por aplicativos ASMX

O ASP.NET compilado antes da execuo. Esta caracterstica traz vantagens sobre as opes interpretadas, como o ASP, JSP e o PHP. Alm de servidor web, suporta a criao e a utilizao de certificados digitais com o Certificate Services, a tecnologia de colaborao 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:

Prof. MSc. Liluyoud Cury de Lacerda

Programao em C#
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 opo Internet Information Services (IIS) no esteja marcada, marque-a, e clique em avanar. Se j estiver marcado, o IIS j est instalado. 5. Para concluir a instalao, ser pedido o CD do Windows XP e depois de coloc-lo, o IIS ser instalado automaticamente.

INSTALAO DO .NET FRAMEWORK


Microsoft .NET uma iniciativa da Microsoft em que visa uma plataforma nica para desenvolvimento e execuo de sistemas e aplicaes. Todo e qualquer cdigo gerado para .NET, pode ser executado em qualquer dispositivo ou plataforma que possua um framework: a "Plataforma .NET" (.NET Framework). Com idia semelhante plataforma Java, o programador deixa de escrever cdigo para um sistema ou dispositivo especfico, e passa a escrever para a plataforma .NET. Prof. MSc. Liluyoud Cury de Lacerda

Programao em C#

A plataforma .NET, executada sobre uma CLR (Common Language Runtime - Ambiente de Execuo Independente de Linguagem) interagindo com uma Coleo de Bibliotecas Unificadas, que juntas so o prprio framework. Esta CLR capaz de executar, atualmente, mais de vinte diferentes linguagens de programao, 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 execuo, construo e desenvolvimento de Web Services e Aplicaes 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 so duplo-compilados, ou seja so compilados duas vezes, uma na distribuio e outra na execuo. Um programa escrito em qualquer umas das linguagens de programao disponvel para a plataforma, o cdigo fonte gerado pelo programador ento compilado pela linguagem escolhida gerando um cdigo intermedirio em uma linguagem chamada MSIL (Microsoft Intermediate Language). Este novo cdigo fonte gera um arquivo chamado de Assembly, de acordo com o tipo de projeto: EXE - Arquivos Executveis, Programas DLL - Biblioteca de Funes ASPX - Pgina Web ASMX - Web Service

No momento da execuo do programa ele novamente compilado, desta vez pelo JIT (Just In Time Compiler), de acordo com a utilizao do programa, por exemplo: Temos um Web Site desenvolvido em ASP.NET, ao entrar pela primeira vez em uma pgina o JIT ir compil-la, nas outras vezes que algum outro usurio acessar esta pgina, ele usar esta compilao. Tambm possvel, atravs de ferramentas especficas, "pr-compilar" o cdigo para que no se tenha o custo da compilao JIT durante a execuo. 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 cdigo compilado, recuperar o

Prof. MSc. Liluyoud Cury de Lacerda

Programao em C#

cdigo original. Isto no uma idia agradvel para as empresas que sobrevivem da venda de softwares produzidos nesta plataforma. Por causa disso, existem ferramentas que "ofuscam" este cdigo MSIL, trocando nomes de variveis, mtodos, interfaces e etc para dificultar o trabalho de quem tentar uma engenharia reversa num cdigo compilado MSIL. A verso atual do .NET Framework a 3.0, chamado de WinFx. Esse o framework padro do Windows Vista, mas pode ser instalado no Windows XP sem problemas. O WinFx foi lanado oficialmente no fim de 2006 e as principais funcionalidades adicionadas em relao a verso 2.0 a incorporao de 3 tecnologias base: Windows Communication Foundation: Permite gerenciar toda a comunicao entre os componentes do .NET Windows Presentation Foundation: Permite criar uma interface do usurio bem mais rica, com recursos 3D entre outros. Windows Workflow Foundation: Permite gerenciar o fluxo de informaes dentro de uma entrutura baseada em .NET

O .Net Framework 3.0 (WinFx) pode ser baixado diretamente do site da Microsoft pelo endereo:
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 opo aceitar o contrato de licena e clique no boto Instalar

3. Caso voc d um duplo clique no tray icon voc ver o andamento da instalao 4. Quando a instalao acabar aparecer essa tela de Instalao com xito. Clique em sair.

Prof. MSc. Liluyoud Cury de Lacerda

Programao em C#
INSTALANDO O VISUAL STUDIO 2005

Microsoft Visual Studio 2005 um programa desenvolvido pela Microsoft, que possibilita um ambiente integrado de desenvolvimento (IDE). Existem vrias verses do mesmo, dentre elas podemos citar: O Visual Studio Express que consiste em 6 produtos separados com objetivos especficos que so 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 verso Professional tais como ferramentas de Acessibilidade, Testes Automatizados e Anlise, 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 caractersticas especficas para colaborao em equipe, gerenciamento de projetos, ferramentas de Banco de Dados e Business Inteligence BI, entre muitas outras caractersticas. Nessa verso se faz necessrio 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 disposio 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 aplicaes, seja web, mvel ou desktop. O Visual Studio contm: Um editor WYSIWYG (O que voc v o que voc tem) Drag-and-drop (arrastar e soltar) Ferramenta de desenho de interfaces de usurio Suporte a HTML Extendido & editores de cdigo e HTML Um gerenciador de banco de dados Suporte a outras tecnologias web, tais como CSS, Javascripte XML Um ambiente integrado de validao em tempo de desenho para padres como XHTML 1.0/1.1 e CSS 2.1. Exemplos prontos de projetos, que no Visual Studio so 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 anlise, desenho e desenvolvimento de aplicaes (projetos de desenvolvimento). O Visual Studio 2005 Express pode ser baixado gratuitamente do site da Microsoft pelo endereo:
http://msdn.microsoft.com/vstudio/express/downloads/

ou para quem tem o DVD que acompanha a apostila, tem uma verso trial de 180 dias da verso Team Edition do Visual Studio. Para instal-lo, basta seguir os seguintes passos:

Prof. MSc. Liluyoud Cury de Lacerda

Programao em C#
1. Dentro do diretrio Visual Studio e no subdiretrio VS, execute (duplo clique) o arquivo setup.exe. Ao aparecer a tela a seguir, clique em Install Visual Studio 2005.

10

2. Depois da descompactao dos arquivos de instalao aparecer a tela a seguir. Apenas clique em Next.

3. Clique na opo I accept terms of the License Agreement para aceitar a licena de uso da Microsoft, e depois clique em Next.

4. Selecione a instalao personalizada selecionando a opo Custom e depois clique em Next.

Prof. MSc. Liluyoud Cury de Lacerda

Programao em C#
5. Desmarque a opo Microsoft SQL Server por 2 motivos: Se sua mquina tiver apenas 512 Mb RAM ou menos, no recomendvel instal-lo. Caso sua mquina tenha mais de 512 Mb, ento o recomendvel instalar a verso 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.

11

6. A tela de acompanhamento da instalao ser apresentada. Pode acontecer nesse meio tempo, ser necessrio a reinicializao do Windows (vai depender da configurao de sua mquina). Mas ao reiniciar, a instalao continuar de onde parou.

7. Ao final da instalao, clique em Finish.

8. Depois de instalado o Visual Studio, a tela inicial da instalao mostrada novamente. Nesse caso importante que seja instalado tambm o MSDN, que toda a documentao do Visual Studio, suas bibliotecas, o help, exemplos, entre outros. Clique em Install Product Documentation para instalar o MSDN

Prof. MSc. Liluyoud Cury de Lacerda

Programao em C#
9. Ao aparecer a tela de instalao do MSDN, clique em Next.

12

10. Clique na opo I accept terms of the License Agreement para aceitar a licena de uso da Microsoft, e depois clique em Next.

11. Digite suas informaes.

12. Selecione a instalao completa (Full) e clique em Next.

Prof. MSc. Liluyoud Cury de Lacerda

Programao em C#
13. Escolha o diretrio de instalao (pode deixar o padro) e clique em Next.

13

14. Clique em Install. 15. A instalao comea

16. Ao finalizar a instalao feche a janela. A tela inicial da instalao mostrada novamente, mas desta vez basta sair (clicar em Exit), pois o Visual Studio e sua documentao j esto instalados.

17. importante tambm instalar os service packs para o VS. Voc pode usar o Microsoft Update para tanto, ou instalar diretamente do DVD que acompanha a apostila.

Prof. MSc. Liluyoud Cury de Lacerda

Programao em C#
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 instalao.

14

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 vo desde componentes visuais que melhoram a interface de sua aplicao, at modelos e frameworks de negcios que facilitam o desenvolvimento de projetos complexos. Esse tipo de modelo de extenso por meio de componentes (que j existia na poca do Delphi) um grande aliado da plataforma, o que a distingue enormemente dos demais (a proporo de componentes existentes para plataforma .NET em comparao a outras plataformas como Java, maior que a proporo de computadores com Windows Instalado versus Linux). Os principais fornecedores (dentre muitos) desses componentes so: 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 verso demo totalmente funcional na qual podem ser utilizados em seu projeto em fase de desenvolvimento. Lgico que ao comercializ-lo, far-se- necessrio o licenciamento do mesmo. Existem tambm uma variedade de componentes gratuitos e poderosos disponveis para download, e quem sabe, voc mesmo no crie sua sute de componentes e disponibiliza para outros. No DVD, na pasta Componentes, temos algumas dessas sutes de componentes que podem ser instalados no seu computador para complementar as funcionalidades j existentes no Visual Studio. altamente recomendvel 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 bsicos para instalao (clicar Next, Next, Next e Install).

Prof. MSc. Liluyoud Cury de Lacerda

Programao em C# O VISUAL STUDIO 2005

15

O Visual Studio 2005, como j foi visto, um ambiente integrado de desenvolvimento (IDE) para a plataforma .NET. Podemos consider-lo tambm uma ferramenta RAD (Rapid Application Development), que nos permite criar aplicaes de maneira bem rpida e intuitiva, uma herana 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 , formulrios e relatrios Criar e analisar os cdigos fontes de diversas linguagens compatveis com o .NET Executar e depurar aplicaes para Desktop, Web, PocketPC, SmartPhone e lgico, para ambientes corporativos Gerenciar banco de dados e Colaborao 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 vrios mdulos, dentre os principais podemos citar:

Prof. MSc. Liluyoud Cury de Lacerda

Programao em C#
MENU PRINCIPAL

16

Todas as aes que o VS pode executar, acessvel pelo Menu Principal, desde a criao de um projeto, seu acompanhamento (gerenciamento), at a sua distribuio.

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 funes mais comuns do Menu Principal, tem um equivalente na Barra de Atalhos, que uma maneira mais fcil de ser acionada (com apenas um clique).

Nem todas as barras de atalhos esto visveis por padro, 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 disponveis e poder visualiz-las ou no, basta ir no menu View, no item ToolBars e selecionar as Barras de Atalhos que gostaria que estivesse disponveis.

SOLUTION EXPLORER
o local onde gerenciamos todos nossos projetos, seus arquivos e configuraes. 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 distribuio. Para visualizar essa janela (caso ela no esteja visvel), basta ir no menu View e selecionar Solution Explorer, ou usar a tecla de atalho Crtl+W+S.

Prof. MSc. Liluyoud Cury de Lacerda

Programao em C#
Como exemplo, podemos verificar na figura que: temos uma Solution chamado Sistemas, que esses sistemas ento subdivididos em Pastas (sistemas para a Fatec, sistemas para So Lucas, Frameworks de desenvolvimento e Projetos comerciais), que cada pasta pode ser subdividida em quantas pastas forem necessrias e que uma pasta pode armazenar Projetos de Desenvolvimento e outros tipos de projetos.

17

Em um Projeto temos toda uma estrutura de pastas e arquivos, s que totalmente relacionadas a aquele projeto, que pode ser um: arquivo de cdigo fonte, um arquivo de layout de pgina 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 cdigo fonte feito em C# chamado Funcionario.cs, que pertence ao projeto Funcionrio, 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 programao .NET baseada em Orientao a Objetos, e os objetos por definio tem caractersticas (propriedades) e apresenta um determinado comportamento (executam aes dado uma determinada circunstncia/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 no esteja visvel), basta ir no menu View e selecionar Properties Window, ou usar a tecla de atalho Crtl+W+P.

Prof. MSc. Liluyoud Cury de Lacerda

Programao em C#
Ao trabalhar na rea de design (desenho) do seu sistema, essa janela do Visual Studio se faz de extrema importncia, dado que cada componente visual de uma janela ou pgina web na verdade um objeto, e alterando as caractersticas e comportamento desse objeto, podemos determinar como nossa aplicao ser tanto em termos de interface (determinado basicamente pelas caractersticas dos objetos) quanto em termos de funcionalidade (terminado basicamente pelas aes que os objetos executam dado um determinado evento). Na janela ao lado estamos vendo as propriedades de um objeto/componente visual. O objeto em questo se chama Principal e do tipo (ou classe j que falamos de OO) DevExpress.XtraBars.Ribbon.RibbonForm. Essa informao pode ser visualizada na parte de cima da janela Properties.

18

O nome do objeto dado pela propriedade (Name) para programas do tipo desktop ou (ID) para programas Web.

Percebemos tambm que as propriedades esto categorizadas, como exemplo acima, a propriedade (Name) est na categoria Design (Desenho). Temos outras categorizaes, como propriedades especficas para aparncia (Appearance), propriedades para comportamento (Behavior), para vinculao de dados (Data), entre muitas outras categorias que variam de objeto para objeto. Caso voc deseje que essas propriedades fiquem em ordem alfabtica em vez de categorizadas, basta clicar em ou clicar em para voltar a ficar categorizadas.

Como foi falado anteriormente, na janela Properties tambm 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 ao a ser executada com um desses eventos Como exemplo pode-se imaginar no que vai acontecer (ao) quando clicarmos com o mouse (evento) em cima dessa janela. Para visualizar os eventos tratados por esse objeto em questo, basta clicar em a visualizar as propriedades, clique em . , e caso deseje voltar

Prof. MSc. Liluyoud Cury de Lacerda

Programao em C#
TOOLBOX
O Visual Studio considerado uma ferramenta RAD (Rapid Application Development), que permite criar aplicaes de maneira rpida, e isso se d em grande parte pelo uso de componentes (objetos) das mais diversas finalidades e totalmente funcionais. Existem componentes para: Criao de interface com o usurio; Controle de segurana; Comunicao e interoperabilidade de sistemas; Acesso a Banco de Dados; Entre milhares de outros.

19

E a maioria deles, para ser usado, basta clicar no componente desejado, arrastar para a sua aplicao e soltar na posio desejada, muito simples. Depois necessrio configurar as propriedades e eventos a serem usados para personalizar sua aplicao. Alm disso, voc pode criar seus prprios componentes, ou modificar os j existentes para atender as suas necessidades, e isto aumenta ainda mais o nmero de componentes disponveis (j foi falado aqui de algumas das sutes de componentes mais famosas para desenvolvimento .NET). Os componentes instalados na sua aplicao esto disponveis na janela Toolbox, e essa janela pode ser totalmente configurada para mostrar os componentes que voc mais utiliza, podendo agrup-los ou no de acordo com a figura ao lado. Para visualizar essa janela (caso ela no esteja visvel), basta ir no menu View e selecionar Toolbox, ou usar a tecla de atalho Crtl+W+X. Dependendo do tipo de aplicao que esteja trabalhando, seja web, desktop ou compact, (aplicaes que utilizam o .NET Compact Framework, especfico para PocketPCs e SmartPhones/Celulares) os componentes disponibilizados (e visveis) podem ser diferentes, j que nem todos os componentes funcionam em todas essas plataformas. Por isso, os componentes disponibilizados so somente aqueles que funcionariam na aplicao em que est trabalhando no momento.

AREA DE TRABALHO

Prof. MSc. Liluyoud Cury de Lacerda

Programao em C#

20

o local onde visualizamos e modificamos o layout de um sistema ou seu cdigo 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 solues em projetos de desenvolvimento de sistemas. Na rea de trabalho pode-se visualizar: Start Page Quando iniciamos o VS, uma Pgina Inicial (Start Page) mostrada na rea de trabalho. Nessa pgina podemos visualizar: os projetos que voc trabalhou ultimamente (Recent Projects), um tutorial (em Ingls) de uso do VS (Getting Started), as ltimas notcias do MSDN (Microsoft Developer Network), entre outras informaes que podem ser personalizadas.

Caso essa pgina no esteja disponvel, clique em View, depois em Other Windows e selecione Start Page.

Prof. MSc. Liluyoud Cury de Lacerda

Programao em C#
Aplicao em modo de Design

21

Boa parte de um projeto de desenvolvimento envolve a definio da interface com o usurio. Com o Visual Studio, pode-se visualizar, mesmo no momento do desenvolvimento, uma interface exatamente igual ao que ser apresentada ao usurio final (tecnologia WYSIWYG What You See Is What You Get).

Na janela acima temos muitos componentes visuais, que sero apresentados exatamente iguais ao usurio quando o programa for executado. Entretanto, em modo de desenvolvimento, componentes no visuais tambm so vistos para poderem ser editados. o caso do componente chamado Estilo (abaixo da figura). Componentes no visuais estaro disponibilizados na rea abaixo da janela e somente so visveis no modo de desenvolvimento e no em execuo.

Prof. MSc. Liluyoud Cury de Lacerda

Programao em C#
Aplicao em modo de Codificao

22

Um sistema certamente tem uma lgica de programao 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 cdigo fonte por traz daquela interface, o cdigo que representa toda a funcionalidade de sua aplicao (nesse caso da janela).

Caso o exemplo mostrado fosse de um projeto para Web, tambm seria possvel visualizar o cdigo HTML por traz de cada pgina Web.

Para mais detalhes assista o vdeo 01 Apresentando o Visual Studio que est no DVD que acompanha a apostila dentro da pasta Vdeos.

Prof. MSc. Liluyoud Cury de Lacerda

Programao em C# A LINGUAGEM C#

23

Nas ltimas duas dcadas, C e C++ foram as linguagens mais amplamente usadas para o desenvolvimento de software comercial e de negcios. 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, aplicaes C e C++ equivalentes freqentemente demoram mais para serem desenvolvidas. Devido a complexidade e longos tempos de ciclo associados a essas linguagens, muitos programadores C e C++ vm procurando uma linguagem que oferea um melhor balanceamento entre poder e produtividade. Existem linguagens atualmente que aumentam a produtividade sacrificando a flexibilidade que programadores C e C++ freqentemente demandam. Tais solues restringem demais o desenvolvedor (por exemplo, omitindo um mecanismo para controle de cdigo de baixo nvel) e proporcionam capacidades do menor denominador comum. Elas no interoperam facilmente com sistemas prexistentes, e nem sempre combinam bem com as prticas de programao Web atuais. A soluo ideal para programadores C e C++ seria o desenvolvimento rpido combinado ao poder de acesso a funcionalidade total da plataforma bsica. Eles desejam um ambiente totalmente sincronizado com os padres Web emergentes que proporcione a fcil integrao com as aplicaes existentes. Adicionalmente, desenvolvedores C e C++ gostariam de ter a habilidade de codificar em baixo nvel quando e se a necessidade aparecer. A soluo 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 aplicaes para a nova plataforma Microsoft .NET, a qual proporciona ferramentas e servios que exploram totalmente a computao e as comunicaes. Devido ao seu elegante projeto orientado a objeto, C# uma escolha excelente para arquitetar uma ampla gama de componentes de objetos de negcio de alto nvel a aplicaes no nvel do sistema. Usando construes de linguagem C# simples, estes componentes podem ser convertidos em servios Web, permitindo que eles sejam invocados pela Internet, a partir de qualquer linguagem rodando em qualquer sistema operacional. Principalmente, C# projetado para trazer desenvolvimento rpido para o programador C++ sem sacrificar o poder e o controle que tm sido a caracterstica fundamental do C e C++. Devido a esta herana, C# possui um alto grau de fidelidade com C e C++. Desenvolvedores familiarizados com estas linguagens podem se tornar produtivos em C# rapidamente.

HISTRIA DA LINGUAGEM
A linguagem C# foi criada junto com a arquitetura .NET. Embora existam vrias outras linguagens que suportam essa tecnologia (como VB.NET, C++, J#), C# considerada a linguagem smbolo do .NET pelas seguintes razes: Foi criada praticamente do zero para funcionar na nova plataforma, sem preocupaes de compatibilidade com cdigo de legado. O compilador C# foi o primeiro a ser desenvolvido. A maior parte das classes do .NET Framework foram desenvolvidos em C#.

O criao da linguagem, embora tenha sido feita por vrios desenvolvedores, atribuda principalmente a Anders_Hejlsberg , hoje um Distinguished Engineer na Microsoft. Anders Hejlsberg era Prof. MSc. Liluyoud Cury de Lacerda

Programao em C#

24

desenvolvedor de compiladores na Borland, e entre suas criaes mais conhecidas esto o Turbo Pascal e o Delphi. Criao do Nome Muitos pensam que o nome C# viria de uma sobreposio de 4 smbolos "+" dando a impresso 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 smbolo real seria o e no o #, porm, devido a limitao de telas, fontes e alguns browsers, no momento da normalizao junto a ECMA, fora especificado apenas que o nome da linguagem seria uma letra C maiscula (U+0043) e o sinal "#" (U+0023), facilitando assim, publicaes e artigos com um caracter encontrado facilmente dos layouts de teclado padres. Normalizao A Microsoft submeteu o C# a ECMA para uma padronizao formal. Em Dezembro de 2001 a ECMA liberou a especificao ECMA-334 Especificao da Linguagem C#. Em 2003 tornou-se uma padro ISO (ISO/IEC 23270). H algumas implementaes em desenvolvimento, destacando: Mono, implementao 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 caractersticas. A padronizao pela ECMA/ISO destas caractersticas foi solicitada, mas ainda no so parte da verso padro da linguagem. Poltica Muitos dos produtos e iniciativas da Microsoft geram polmica no campo poltico e a criao e desenho da C# no foi excepo. Devido natureza fechada da C# com uma instituio comercial, a discusso poltica continua em relao legitimidade da sua normalizao, as suas semelhanas com Java, o seu futuro como uma linguagem para uso generalizado e outros assuntos. Alguns peritos em segurana encontram-se cpticos em relao eficcia do mecanismo de segurana do CLR e criticam a sua complexidade. Ao contrrio de linguagens proprietrias tal como a Visual Basic, a Microsoft optou por submeter a C# a um processo de normalizao. No entanto, a Microsoft continua a ser a principal fora a induzir mudanas e inovao na linguagem. Alm disso, a Microsoft tornou bem claro que a C#, tal como outras linguagens .NET, uma parte importante da sua estratgia 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 estratgia global de negcios.

CARACTERSTICAS
C# (pronuncia-se "c chrp" em portugus ou "c charp" em ingls) , de certa forma, a linguagem de programao 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 no existe o conceito de cdigo nogerenciado (unmanaged code) em C#. Suas estruturas de dados primitivas so objetos que correspondem a tipos em .NET. A desalocao automtica de memria por garbage colletor alm de Prof. MSc. Liluyoud Cury de Lacerda

Programao em C#

25

vrias de suas abstraes tais como classes, interfaces, delegados e excees so nada mais que a exposio explicita dos recursos do ambiente .NET. Quando comparada com C e C++, a linguagem restrita e melhorada de vrias formas incluindo: Ponteiros e aritmtica sem checagem s podem ser utilizados em uma modalidade especial chamada modo inseguro (unsafe mode). Normalmente os acessos a objetos realizada atravs de referncias seguras, as quais no podem ser invalidadas e normalmente as operaes aritmticas so checadas contra sobrecarga (overflow). Objetos no so liberados explicitamente, mas atravs de um processo de coleta de lixo (garbage collector) quando no h referncias aos mesmos, prevenindo assim referncias invlidas. Destrutores no existem. O equivalente mais prximo a interface Disposable, que juntamente com a construo using block permitem que recursos alocados por um objeto sejam liberados prontamente. Tambm existem finalizadores, mas como em Java sua execuo no imediata. Como em Java, s permitida a herana simples, mas uma classe pode implementar vrias interfaces abstratas. O objetivo principal simplificar a implementao do ambiente de execuo. C# mais seguro com tipos que C++. As nicas converses implcitas por default so converses seguras, tais como ampliao de inteiros e converses de um tipo derivado para um tipo base. No existem converses implcitas entre inteiros e variveis lgicas ou enumeraes. No existem ponteiros nulos (void pointers) (apesar de referncias para Object serem parecidas). E qualquer converso implcita definida pelo usurio deve ser marcada explicitamente, diferentemente dos construtores de cpia de C++. A sintaxe para a declarao de vetores diferente ("int[] a = new int[5]" ao invs de "int a[5]"). Membros de enumerao so colocados em seu prprio espao de nomes (namespace) C# no possui modelos (templates), mas C# 2.0 possui genricos (generics). Propriedades esto disponveis, as quais permitem que mtodos sejam chamados com a mesma sintaxe de acesso a membros de dados. Recursos de reflexo completos esto disponveis

Apesar de C# ser freqentemente tido como similar a Java, existem uma srie de diferenas importantes, tais como: Java no implementa propriedades nem sobrecarga de operadores. Java no implementa um modo inseguro que permita a manipulao de ponteiros e aritmtica sem checagem. Java possui excees checadas, enquanto excees em C# so no checadas como em C++. Java no implementa o goto como estrutura de controle, mas C# sim. Java utiliza-se de comentrios Javadoc para gerar documentao automtica a partir de arquivos fonte. C# utiliza comentrios baseados em XML para este propsito. C# suporta indexadores e delegados.

Produtividade e Segurana A nova economia Web onde os concorrentes esto a apenas um clique de distncia est forando as empresas a responder aos desafios competitivos mais rapidamente do que nunca. Desenvolvedores so chamados para diminuir tempos de ciclo e produzir revises mais incrementais de um programa, ao invs de uma nica verso monumental.

Prof. MSc. Liluyoud Cury de Lacerda

Programao em C#

26

C# projetado com estas consideraes em mente. A linguagem projetada para ajudar os desenvolvedores a fazer mais com um nmero menor de linhas de cdigo e menos oportunidades de erro. Abraa os padres emergentes de programao Web O novo modelo para desenvolvimento de aplicaes significa que mais e mais solues requerem o uso de padres 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 ns a conhecemos hoje estava na sua infncia. Como resultado, elas nem sempre proporcionam a melhor forma de trabalhar com as novas tecnologias Web. Programadores C# podem utilizar um framework extensivo para construo de aplicaes na plataforma Microsoft .NET. C# inclui suporte pr-construdo para transformar qualquer componente em um servio Web que pode ser invocado pela Internet a partir de qualquer aplicao rodando em qualquer plataforma. O que ainda melhor, o framework dos servios Web pode tornar os servios Web existentes iguais a objetos C# nativos para o programador, permitindo assim que os desenvolvedores utilizem os servios Web existentes com as habilidades de programao orientada a objeto que eles j possuem. Existem mais recursos sutis que tornam o C# uma excelente ferramenta de programao Internet. Por exemplo, o XML est emergindo como a forma padro de passar dados estruturados pela Internet, que freqentemente so muito pequenos. Para performance melhorada, C# permite que os dados XML sejam mapeados diretamente em um tipo de dados struct ao invs de uma classe. Esta uma forma mais eficiente de tratar pequenas quantidades de dados. Elimina erros de programao de alto custo Mesmo os programadores C++ mais experientes podem cometer o mais simples dos erros esquecer de inicializar uma varivel, por exemplo e freqentemente estes erros simples resultam em problemas no previstos que podem permanecer no descobertos por longos perodos de tempo. Uma vez que um programa est em uso na produo, pode ser muito custoso corrigir mesmo o mais simples erro de programao. O projeto moderno do C# elimina os erros de programao C++ mais comuns. Por exemplo: Garbage collection libera o programador da sobrecarga do gerenciamento de memria manual. Variveis no C# so inicializadas automaticamente pelo ambiente. Variveis so type-safe.

O resultado final uma linguagem que torna bem mais fcil para os desenvolvedores escrever e manter programas que resolvem problemas de negcio complexos. Reduz os custos de desenvolvimento do dia a dia com suporte pr-construdo para versioning Atualizao de componentes de software uma tarefa com alta probabilidade de erro. Revises feitas no cdigo podem alterar no intencionalmente a semntica de um programa existente. Para auxiliar o desenvolvedor neste problema, C# inclui o suporte a versioning na linguagem. Por exemplo, a sobrescrita de mtodo deve ser explcita; ela no pode acontecer de forma inadvertida como no C++ ou Java. Isto ajuda a evitar erros de codificao e preserva flexibilidade de versioning. Um recurso Prof. MSc. Liluyoud Cury de Lacerda

Programao em C#

27

relacionado o suporte nativo para interfaces e herana de interface. Estes recursos habilitam frameworks complexos a serem desenvolvidos e evoludos com o tempo. Em conjunto, estes recursos tornam mais robusto o processo de desenvolvimento de verses posteriores de um projeto, reduzindo assim os custos gerais de desenvolvimento para as verses sucessivas. Melhor mapeamento entre processos de negcio e implementao Com o alto nvel de esforo gasto pelas corporaes no planejamento de negcio, imperativo ter um forte conexo entre os processos abstratos de negcio e a implementao real de software. Mas a maioria das ferramentas de linguagem no possui uma forma fcil de unir lgica de negcio ao cdigo. Por exemplo, os desenvolvedores provavelmente utilizam comentrios de cdigo hoje em dia para identificar quais classes formam um objeto de negcio abstrato particular. A linguagem C# permite metadados extensveis typed que podem ser aplicados a qualquer objeto. Um arquiteto de projeto pode definir atributos especficos de domnio e aplic-los a quaisquer classes de elemento da linguagem, interfaces e assim por diante. O desenvolvedor pode ento examinar via programao os atributos de cada elemento. Isto torna fcil, por exemplo, escrever uma ferramenta automatizada que garantir que cada classe ou interface est identificada corretamente como parte de um objeto de negcio particular, ou simplesmente criar relatrios com base nos atributos especficos de domnio de um objeto. A forte unio entre os metadados customizados e o cdigo do programa ajuda a fortalecer a conexo entre o comportamento pretendido do programa e a implementao real. Interoperabilidade extensiva O ambiente type-safe gerenciado apropriado para a maioria das aplicaes corporativas. Mas a experincia mostra que algumas aplicaes continuam a exigir cdigo "nativo", ou por razes de performance ou para interoperar com interfaces de programao de aplicao (APIs) existentes. Estes cenrios podem forar os desenvolvedores a usar C++ mesmo quando eles prefeririam usar um ambiente de desenvolvimento mais produtivo. C# enderea 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 no tm mais que implementar explicitamente interfaces IUnknown e outras interfaces COM. Ao invs disto, estes recursos so pr-construdos. De forma similar, programas C# podem usar nativamente objetos COM existentes, independente da linguagem usada para sua criao. 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 cdigo marcado especialmente, desenvolvedores podem usar ponteiros e recursos C/C++ tradicionais tais como memria gerenciada manualmente e aritmtica de ponteiro. Esta uma enorme vantagem sobre os outros ambientes. Isto significa que programadores C# podem construir sobre sua base de cdigo C e C++ existente, ao invs de descart-la. Nos dois casos suporte a COM e acesso API nativo a inteno proporcionar ao desenvolvedor o poder e o controle essenciais sem ter que deixar o ambiente C#.

Prof. MSc. Liluyoud Cury de Lacerda

Programao em C#
Bibliotecas de cdigo

28

Ao contrrio das outras linguagens de programao, nenhuma implementao de C# atualmente inclui qualquer conjunto de bibliotecas de classes ou funes. Ao invs disso, C# est muito vinculada ao framework .Net, do qual C# obtm suas classes ou funes de execuo. O cdigo organizado em um conjunto de namespaces que agrupam as classes com funes similares. Por exemplo: System para os tipos e estruturas bsicos, System.Console para aplicaes de entrada e sada, System.Drawing para grficos, System.Collections para estrutura de dados e System.Windows.Forms para o sistema Windows Form. E muitas outras bibliotecas.

Um nvel de organizao 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 funo 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 implementao da Microsoft).

Prof. MSc. Liluyoud Cury de Lacerda

Programao em C# ESTRUTURAS DA LINGUAGEM

29

Nesse captulo, iremos introduzir a linguagem C# bsica (sem uso de orientao a objeto) atravs de alguns exemplos simples. O aluno deve entender, neste momento, que C# apenas uma outra linguagem de programao, assim como C, Pascal, Basic, Fortran, Cobol. Queremos ver como C# trata: Tipos bsicos Constantes Decises Laos

Veremos tambm como criar, compilar e executar programas usando o Visual Studio. Observe que no veremos chamadas de sub-programas (subrotinas ou funes) aqui, este assunto bem diferente em C#, devido orientao a objeto, e ser visto frente. Importante! Voc responsvel por aprender detalhes adicionais da linguagem C#. O que faremos em aula no uma cobertura completa da linguagem.

CRIANDO UMA SOLUO


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 alm do conceito de Projetos, tem tambm o conceito de Soluo, que nada mais do que um conjunto de projetos. No exemplo que vamos dar, vamos criar uma Soluo que vai levar seu nome, e vamos dividir essa soluo 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

Prof. MSc. Liluyoud Cury de Lacerda

Programao em C#
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:\.

30

6. Em cima da sua Solution, clique com o boto direito do mouse, selecione Add | New Solution Folder para criar uma pasta na Soluo. Crie a pasta chamada Console para aplicaes simples e sem interface grfica Crie a pasta chamada Windows para aplicaes Desktop (baseado em janelas) Crie a pasta chamada Web para aplicaes para Web

Apesar de termos criado 3 pastas na soluo, essa diviso lgica apenas. Se voc verificar dentro do diretrio da soluo (no nosso caso C:\Liluyoud), voc ver que nenhuma pasta foi criada (particularmente acho uma falha do VS). 7. Para que a soluo represente exatamente o seu sistema de arquivos, v no Windows Explorer e crie essas 3 pastas (com o mesmo nome) dentro do diretrio criado para sua soluo (no nosso caso C:\Liluyoud).

CRIANDO O PROGRAMA ALO MUNDO


Prof. MSc. Liluyoud Cury de Lacerda

Programao em C#
Para variar, nosso primeiro programa ser o Alo Mundo.

31

O objetivo principal desse programa no mostrar a mensagem Alo Mundo para o usurio, 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 sesso apenas mostrar aspectos da linguagem C#, todos os projetos que criaremos aqui sero do tipo Console e, portanto estaro dentro da pasta Console. Um programa do tipo Console um programa que no apresenta interface grfica, no contm janelas ou qualquer outro componente visual, apenas lgica de programao. Para cri-lo, basta seguir os seguintes passos:

1. Selecione a pasta Console 2. Clique com o boto 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 diretrio da sua Soluo com a subpasta Console (no nosso caso, C:\Liluyoud\Console). 8. Clique no boto OK para criar o projeto.

Prof. MSc. Liluyoud Cury de Lacerda

Programao em C#
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 soluo Liluyoud. O projeto Alo tem duas pastas chamadas Properties e References (cujos objetivos sero abordadas quando necessrio). O projeto Alo tem um arquivo chamado Program.cs que identifica um cdigo fonte em C# (a extenso .cs se d devido ao C Sharp).

32

No contedo do arquivo Program.cs est definido uma classe. Agora para criar o programa Alo Mundo, vamos digitar o cdigo de acordo com o mostrado abaixo. As particularidades do cdigo so mostradas pelos bales e explicadas prontamente. Mais informaes sobre essa estrutura sero abortadas posteriormente nessa apostila.

2 3
4

1. A clusula using define quais bibliotecas de classe o programa ir usar. Equivale a clausula imports do Java. Dificilmente usamos, pois as principais bibliotecas j so importadas automaticamente. 2. A clusula namespace define o espao de nomes do seu programa. usado para dividir logicamente os mdulos de seu sistema. Por padro o namespace tem o mesmo nome do projeto, mas pode-se mudar para atender suas especificaes. Veremos mais detalhes sobre namespaces quando trabalharmos com uma aplicao um pouco mais complexa.

5 6

3. Todo programa Orientado a Objetos tem classes definidas (mais detalhes na sesso de Orientao a Objetos dessa apostila). Quando criamos um projeto, criada uma classe padro chamada Program, que identifica o ponto inicial de execuo de uma aplicao (Console ou Windows). Perceba que a classe tem o mesmo nome do arquivo criado para identific-la, por padro o nome Program. Voc pode renomear a classe sem problemas, mas no esquea de renomear o arquivo tambm. 4. Na classe Program temos um mtodo (conceito a ser abordado na Orientao a Objetos) chamado Main que identifica a primeira ao a ser executada pelo programa. Logo, se quisermos que o programa execute alguma ao primeiramente, basta colocar os comandos dentro desse mtodo que so delimitados por { e }. Prof. MSc. Liluyoud Cury de Lacerda

Programao em C#
Os comandos colocados dentro do mtodos so dois:

33

5. Console.WriteLine ( ): um comando que permite escrever qualquer informao no Console de sada do programa, que nesse caso o monitor por padro. 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 informao do Console de Entrada do programa, que nesse caso o teclado do usurio por padro. Mas nesse programa ele usado para outro objetivo que esperar o usurio digitar alguma coisa para poder finalizar o programa. Fazemos isso nesse caso, porque seno o programa ser executado to rpido que no conseguiremos visualizar a sada do mesmo..

ESTRUTURAS BSICAS
Antes de comearmos a criar algoritmos complexos, vamos conhecer algumas estruturas simples que so usadas no C# (assim como em outras linguagens, mas com sintaxe diferente) que so: Comentrios Blocos de comandos Variveis e seus Tipos Converso de Tipos Comandos de Escrita e Leitura

Comentrios Criar comentrios em seu cdigo fonte muito importante, j que possibilita um entendimento melhor dos algoritmos ali implementados. Os comentrios na hora da compilao so ignorados, por isso voc pode usar (e no abusar) deles. Podemos usar comentrios para: Identificar o responsvel e data de criao daquele cdigo Identificar todas as alteraes feitas no cdigo, seus responsveis e datas de alterao Identificar o objetivo daquele cdigo Explicar de maneira mais fcil a lgica de seu algoritmo Entre muitos outros, inclusive para a documentao profissional de seu cdigo fonte atravs de marcadores XML (semelhante ao mecanismo javadoc do Java).

Os tipos de comentrios so: /* */ : Textos delimitados por essa seqncia de caracteres ficam todos comentados mesmo que o texto contenha mais de uma linha. // : Texto com essa seqncia de caracteres na frente dele viram comentrio de uma nica linha /// : Texto com essa seqncia de caracteres na frente dele viram comentrio para documentao XML

Para mostrar a funcionalidade da documentao de seu cdigo inserindo esses 3 tipos de comentrios, vamos alterar o programa Alo Mundo:

Prof. MSc. Liluyoud Cury de Lacerda

Programao em C#

34

/* Programa Alo Mundo * Autor: Lilluyoud Cury de Lacerda * Data de Criao: 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> /// Mtodo que define quais aces sero executados primeiramente /// quando o programa for executado /// </summary> /// <param name="args">Um conjunto de parmetros 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 usurio tecle algo para finalizar a execuo do progama Console.ReadLine(); } } }

Blocos de Comando Todos os comandos em C# tem que terminar com um ponto-e-vrgula ( ; ) e esses comandos tem que estar delimitados por um bloco que tem incio e fim, representados no C# pelos caracteres abre-chaves ( { ) que define o incio do bloco e fecha-chaves ( } ) que define o fim do bloco. O namespace precisa ser delimitado com um incio e fim, no caso com { e }, assim como o classe e o mtodo Main. Outras estruturas tamb precisam ser delimitadas, e que sero vistas ao longo da apostila. Por essa delimitao sabemos que a o mtodo Main est dentro da classe Program que esta dentro do namespace Alo. Por padro o Visual Studio fecha as chaves na mesma coluna onde ela foi aberta, mas podemos configurar para o padro usado no Java, onde abrimos as chaves logo aps o comando que abre ela e fechamos a mesma coluna que o comando foi iniciado, como exemplo:
Modelo padro do C#
namespace Alo { class Program { static void Main(string[] args) { } } }

Modelo padro do Java


namespace Alo { class Program { static void Main(string[] args) { } } }

Prof. MSc. Liluyoud Cury de Lacerda

Programao em C#

35

A endentao em ambos os casos importantssimo, onde um bloco de comando que esteja dentro de outro bloco, deve estar alinhado pelo menos com 3 espaos para dentro (ou um tab como usado no VS).

Variveis e Tipos de Dados Uma varivel consiste em um elemento ao qual lhe damos um nome e lhe atribumos um determinado tipo de informao, quer dizer, variveis so estruturas que possibilitam armazenar valores e serem modificados e recuperados a contento. As variveis podem ser consideradas como a base da programao. Deste modo poderamos escrever em uma linguagem fictcia:
a = "C# " b = " fcil"

A varivel que ns chamamos "a" possui um elemento de informao de tipo texto que "cachorro". Assim como, a varivel "b" contm o valor "morde". Poderamos definir uma terceira varivel que fosse a soma destas duas:
c = a + b

Se introduzssemos uma petio de impresso desta varivel em nossa linguagem fictcia:


imprimir(c)

O resultado poderia ser:


C# facil

Poderamos da mesma forma trabalhar com variveis que contivessem nmeros:


a = 3 b = 4 c = a + b imprimir(c)

O resultado de nosso programa seria:


7

Como podemos observar, as variveis tem um tipo que podem ser alem de nmeros e textos, tipos booleanos, vetores, tipos complexos (classes na Orientao a Objetos), entre outros. Alm disso, percebe-se que valores textuais so delimitados por aspas duplas, j valores numricos no precisam. Em cincia da computao tipos de variveis ou dados um nome para uma combinao de valores e de algumas operaes que uma varivel pode executar, podem variar conforme o sistema operacional e a linguagem de programao e so utilizados para indicar ao compilador ou interpretador as converses necessrias para obter os valores em memria durante a construo do programa. Por outro lado, ajudam tambm o programador a detectar eventuais erros.

Prof. MSc. Liluyoud Cury de Lacerda

Programao em C#

36

Dependendo da linguagem de programao o tipo de um dado verificado diferentemente, de acordo com a anlise lxica, sinttica e semntica do compilador ou interpretador da linguagem. Os tipos tm geralmente associaes com valores na memria ou com objetos (para uma linguagem orientada a objeto) ou variveis. Tipos de dados primitivos so tipos que tem tamanho fixo e sempre apresentam um valor padro, alm de serem armazenados na pilha do programa para acesso rpido. Os tipos primitivos do C# so:
Tipo bool char byte short int long float double Tamanho 1 bit 16 bits 8 bits 16 bits 32 bits 64 bits 32 bits 64 bits Mnimo Unicode 0 0 -215 -231 -263 1EEE754 1EEE754 Mximo Unicode 216 - 1 255 +215 - 1 +231 -1 +263 - 1 1EEE754 1EEE754 Valor padro False \u0000 0 0 0 0 0.0 0.0

O tipo string no primitivo pois no tem tamanho fixo e tem operaes especficas associada a ela (string uma classe). O tipo string serve para armazenar qualquer texto no padro Unicode. Em C# para se declarar uma varivel primeiro temos que definir o tipo para depois definir o nome da varivel e opcionalmente, inici-la com algum valor. Sintaxe:
TipoDeDado nomeDdaVarivel [= valorInicial];

Exemplo:
// declarao de uma varivel do tipo int (inteiro) com o nome de idade int idade;

Ou
// declarao de uma varivel do tipo int (inteiro) com o nome de idade e iniciada com // o valor 20 int idade = 20;

Caso tenhamos duas variveis do mesmo tipo, podemos declarar as duas ao mesmo tempo, apenas separando-as por vrgulas:
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 variveis, o padro recomendado (no obrigatrio) : Nomes de variveis no podem abreviadas e devem fornecer um sentido completo Certo: int quantidade; Errado: int qtd; Nomes de variveis devem comear com letra minscula, e caso o nome seja composto de duas palavras ou mais, cada nome deve subseqente ao primeiro deve iniciar com letra maiscula. Certo: string telefoneComercial; Errado: string TelefoneComercial, telefonecomercial; Prof. MSc. Liluyoud Cury de Lacerda

Programao em C#

37

As variveis em C# so estticas (assim como em Java, Pascal, entre outros), isto , no podem ter tipo de dados modificado na sua execuo (como o phyton, php etc..., que tem tipos dinmicos). No modelo esttico, uma varivel do tipo numrica em nenhum momento pode receber outro tipo de informao a no ser tipos numricos. J as variveis dinmicas podem mudar seu tipo de informao ao longo da execuo de um programa. Variveis Estticas
nota = 10 ... nota = 5 // esse cdigo da erro, como a // varivel numrica, s pode // atribuir valores numricos a ela

Variveis dinmicas
nota = 10 ... nota = 5 // esse cdigo no da erro, a varivel // de numrica vira textual

Outra caracterstica importante tambm a necessidade de se declarar uma varivel e seu tipo previamente (como C# e Java) ou apenas usar uma varivel e deixar que o compilador atribua em modo de execuo 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
int nota nota = 10 media = 7 // esse cdigo da erro, pois a // varivel mdia no foi declarada

Linguagem Fracamente Tipada


nota = 10 media = 7 // esse cdigo no da erro, pois no // necessrio declarar a varivel // previamente

A seguir temos alguns exemplos de declaraes de variveis.


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";

Converso de Tipos Apesar do C# ser baseado em variveis estticas, possvel converter os tipos de dados de uma varivel, desde que essa converso seja possvel, por exemplo: possvel converter qualquer tipo primitivo para string mas nem sempre possvel o contrario Um string que representa um nmero pode ser convertido para um tipo numrico, caso no represente, a converso gerar uma exceo. Um numero pode sempre ser convertido para um nmero com mais bits, exemplo, um tipo byte (8 bits) pode ser convertido para um do tipo int (32 bits). O contrrio nem sempre possvel (de um tipo com mais bits para represent-lo para um com menos bits), desde que o valor no exceda o limite do tipo menor, a converso ocorrer sem problemas, seno, haver uma exceo (erro) na execuo.

Prof. MSc. Liluyoud Cury de Lacerda

Programao em C#

38

Nas converses que sempre podero acontecer, o mesmo feito automaticamente, sem precisar forar nenhuma dessas converses. Logo possvel 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 converso dos tipos: De Double para float, long para int, de int para short, de short para byte De uma string para um tipo numrico

Esses tipos de converses tem que ser feita de forma explcita, e no C# existem algumas formas de se fazer isso. A mais simples usando a classe Convert. Essa classe implementa vrios mtodos que permite a converso de qualquer tipo para outro, desde que essa converso seja possvel. 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 nmero 123 para uma string string palavra1 = Convert.ToString(123); // outra maneira de converter o nmero 123 para uma string string palavra2 = 123.ToString();

Comandos de Escrita e Leitura Como vamos trabalhar primeiramente com programas no visuais, isto , aplicaes do tipo Console, importante aprendermos uma maneira de ler informaes do usurio e tambm enviar. Para tanto, o C# implementa alguns mtodos dentro da classe Console que faz parte do espao de nomes (namespace) chamado System. Para escrever alguma informao na tela podemos usar esses dois comandos:
Console.WriteLine( informao ); Console.Write( informao );

Onde WriteLine usado para escrever um dado e pular uma linha Write usado para escrever um dado e no pular uma linha Informao qualquer valor, sejam valores numricos, textos ou uma concatenao entre eles. Prof. MSc. Liluyoud Cury de Lacerda

Programao em C#

39

Para ler alguma informao do usurio, podemos usar o comando:


varivel = Console.ReadLine();

Onde Varivel pode ser de qualquer tipo ReadLine l uma informao do usurio e essa informao sempre do tipo string, caso queira mudar o tipo, necessrio usar o Convert.

Exemplo Para explicar melhor o conceito de variveis, 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 mdia do aluno: 1. Abra o Visual Studio 2005 2. Na rea Recent Projects selecione a soluo que voc criou no exerccio anterior (no nosso caso a Soluo Liluyoud)

3. Ao abrir sua soluo, selecione a pasta Console 4. Com o boto direito do mouse, clique em cima da pasta e selecione o item de menu Add | New Project...

Prof. MSc. Liluyoud Cury de Lacerda

Programao em C#
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 Bsicas. 7. Na rea Location informe o local onde voc deseja armazenar seu novo projeto, que o local onde sua soluo foi criada e dentro da pasta Console ( no nosso caso seria C:\Liluyoud\Console ).

40

Agora a pasta Console da nossa Soluo contem dois projetos, o Alo e o Estruturas Bsicas. Entretanto em uma soluo, 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 recm criado, para mudar o projeto ativo da soluo, precisamos: 8. Selecione o projeto que deseja ser o ativo (padro) 9. Com o boto direito do mouse, clique no projeto e selecione a opo 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 mtodo Main. A seguir temos um modelo de soluo para o problema.

Prof. MSc. Liluyoud Cury de Lacerda

Programao em C#
using System; using System.Collections.Generic; using System.Text; namespace Basico { class Program { static void Main(string[] args) { // declarao das variveis string aluno; double nota1, nota2; // lendo as informaes do usurio 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 clculos 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 mdia {0}", media); // esperando o usurio clicar para sair do programa Console.ReadLine(); } } }

41

ESTRUTURAS DE DECISO
O C# assim como outras linguagens apresentam diversas estruturas que controla a execuo (fluxo e comportamento) de um programa. Dentre elas podemos citar as estruturas de deciso permitem que Prof. MSc. Liluyoud Cury de Lacerda

Programao em C#

42

escolhamos qual parte do cdigo ser executado dado uma expresso booleana (que pode ter como resultado, apenas dois valores: verdadeiro ou falso).

if else if - else Um exemplo de estrutura de deciso a estrutura IF (SE), que serve para mudar o fluxo da execuo de um programa dado uma expresso booleana. A maioria dos programas tomam decises que afetam seu fluxo. As declaraes que tomam essas decises so chamadas de declaraes de controle. Sintaxes: if sem chaves
if (expressao booleana) comando;

if com chaves
if (expressao booleana) { comando 1; comando 2; ... comando n; } Obs: Usando quando temos vrios comandos fazendo parte do if

Obs: Usando quando temos apenas um comando fazendo parte do if

if - else sem chaves


if (expressao booleana) comando1; else comando2;

if com chaves
if (expressao booleana) { comandos bloco 1; ... } else { comandos bloco 2; ... }

Obs: onde comando1 ser somente executado se a expresso booleana for verdadeiro, e caso for falso ser executado o comando2

Obs: onde os comandos do bloco 1 sero somente executados se a expresso 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 sero somente executados se a expresso booleana 1 for verdadeira; Os comandos do bloco 2 sero somente executados se a expresso booleana 2 for verdadeira; Os comandos do bloco n sero somente executados se a expresso booleana n for verdadeira; Os comandos do bloco else sero somente executados se nenhuma expresso booelana anterior for verdadeira.

O uso de chaves obrigatrio quando se quer que mais de um comando seja executado quando uma expresso verdadeira ou no. Caso o fluxo seja direcionado para apenas um comando, a chaves no se faz necessria. As chaves delimitam blocos de comando, similiar ao Inicio...Fim usando nos algortimos.

Prof. MSc. Liluyoud Cury de Lacerda

Programao em C#
switch

43

O comando switch existe nas principais linguagens de programao (C, C++, Java, C#). Seu propsito permitir que o valor de uma varivel ou expresso controle o fluxo de execuo do programa. Sintaxe: O comando deve comear com a palavra reservada switch, e cada bloco de execuo deve conter a palavra reservada case acompanhada do valor que a varivel de controle deve ter. Para finalizar o bloco, devemos usar o comando break. Switch
switch ( expresso ) { case valor1: comandos; break; case valor2: comandos; break; ... case valorN: comandos; break; default: comandos; break; } Onde: Os comandos relacionados ao case valor1 sero somente executados se o valor da expresso for igual ao valor1; Os comandos relacionados ao case valor2 sero somente executados se o valor da expresso for igual ao valor2; Os comandos relacionados ao case valorN sero somente executados se o valor da expresso for igual ao valorN; Os comandos do bloco default sero somente executados se nenhuma expresso tiver um valor definido na estrutura case.

Exemplo Para explicar melhor o conceito de estruturas de deciso, vamos implementar um programa cujo objetivo similar ao exerccio anterior, sendo que este ir mostrar se o aluno passou por mdia (mdia maior ou igual a 6), vai pra final ou reprovou de vez (mdia menor que 3). Para os alunos que passaram por mdia, o programa ainda definir um conceito para aquele aluno: A+ para mdia 10 A para mdia 9 para mdia 8 B para mdia 7

1. Abra o Visual Studio 2005 2. Na rea Recent Projects selecione a soluo que voc criou no exerccio anterior (no nosso caso a Soluo Liluyoud)

Prof. MSc. Liluyoud Cury de Lacerda

Programao em C#

44 3. Ao abrir sua soluo, selecione a pasta Console 4. Com o boto 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 Deciso. 7. Na rea Location informe o local onde voc deseja armazenar seu novo projeto, que o local onde sua soluo foi criada e dentro da pasta Console ( no nosso caso seria C:\Liluyoud\Console ).

No se esquecendo de colocar o projeto atual como projeto padro (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 mtodo Main. A seguir temos um modelo de soluo para o problema.

using System; using System.Collections.Generic; using System.Text; namespace Decisao { class Program {

Prof. MSc. Liluyoud Cury de Lacerda

Programao em C#
static void Main(string[] args) { // declarao das variveis string aluno; double nota1, nota2; // lendo as informaes do usurio 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 clculos double media = (nota1 + nota2) / 2; // verificando a situao do aluno if (media >= 6) { Console.Write("Aluno Aprovado "); // para trabalhar com switch precisamos usar numeros inteiros // e por isso arredondamos a varavel mdia 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 satisfatrio"); break; } } else if (media >= 3) { Console.WriteLine("Aluno para Prova Final"); } else { Console.WriteLine("Aluno Reprovado"); } // esperando o usurio clicar para sair do programa Console.ReadLine(); } } }

45

Como exemplo, temos a seguinte sada de execuo do programa:

ESTRUTURAS DE REPETIO

Prof. MSc. Liluyoud Cury de Lacerda

Programao em C#

46

O C# assim como outras linguagens apresentam diversas estruturas que permitem a execuo de um comando ou um bloco de comandos mais de uma vez (ou nenhuma em alguns casos), controlando o fluxo de execuo de um programa. Esse fluxo de execuo controlado por uma expresso booleana, por isso, uma estrutura de repetio normalmente composto por essa expresso mais um comando ou um bloco de comandos. No caso, a expresso booleana - chamada de expresso de controle ou condio de parada - ser avaliada e, se for verdadeira, o comando ser executado, caso contrrio, o fluxo de repetio ser parado. Deve-se observar que, caso o comando - ou bloco de comandos - executado dentro de uma estrutura de repetio no altere nenhum dos elementos da expresso de controle, a repetio ser infinita. No incomum especificar-se, como expresso de controle do, uma expresso que sempre seja verdadeira, tornando a repetio infinita um efeito desejado. Nesses casos, ou h uma outra estrutura de controle dentro dos comandos a serem repetidos que terminar o lao de repetio - tal como um comando break - ou o programa controla um conjunto de aes que realmente dever ser executado ininterruptamente - como um sistema operacional ou um programa de controle de um dispositivo porttil, por exemplo. Existem 3 tipos clssicos de estruturas de repetio descritos a seguir: for No comando for, podemos dizer que o(s) comando(s) ser(ao) executado(s) por uma quantidade prdefinida de vezes, utilizando-se pra isso, um contador interno, inicializado previamente, que ser modificado a cada iterao do comando for. A execuo da estrutura for ento est vinculada a esse contados, executando o(s) comandos enquanto a expresso booleana, que envolve o contador, for verdadeiro, ou parando a execuo caso ele seja falso. Sintaxe: for
for (VI; CP; INC) comando; ou for (VI; CP; INC) { comandos; } Onde: VI nde Inicial; o contador iniciado com um Valor

CP Condio de Parada que nada mais do que uma expresso booleana (ou expresso de controle) que envolve o contador iniciado e que controlar a execuo ou no dos comandos; INC o local onde o contador modificado, pode ser INCrementado ou diminudo ao longo das iteraes do comando for.

while No comando while, podemos dizer que o(s) comando(s) ser(ao) executado(s) enquanto a expresso for verdadeira - da derivando o nome do comando while. O fato de a expresso ser avaliada antes de o comando ser executado caracteriza o comando while como sendo um repetitivo pr-testado, diferenciando-o de comandos repetitivos ps-testados, tais como o do-while. Como o while uma estrutura de repetio pr-testado, pode acontecer que os comandos definidos no bloco de comandos possam no ser executados. Prof. MSc. Liluyoud Cury de Lacerda

Programao em C#
Sintaxe: while
while (CP) comando; ou while (CP) { comandos; }

47

Onde: CP Condio de Parada que nada mais do que uma expresso booleana (ou expresso de controle) que controlar a execuo ou no dos comandos da estrutura while;

do... while No comando do...while, podemos dizer que o(s) comando(s) ser(ao) executado(s) enquanto a expresso for verdadeira - da derivando o nome do comando while. O fato de a expresso ser avaliada depois de o comando ser executado (usando-se o comando do faa - antes do while) caracteriza o comando como sendo um repetitivo ps-testado, onde sempre pelo menos uma vez os comandos definidos no bloco de comandos sero executados. Sintaxe: do...while
do comando; while (CP) ou do { comandos; } while (CP) Onde: CP Condio de Parada que nada mais do que uma expresso booleana (ou expresso de controle) que controlar a execuo ou no dos comandos da estrutura do...while;

Exemplo Para explicar melhor o conceito de estruturas de repetio, vamos implementar um programa cujo objetivo criar um menu de execuo que sempre ser mostrado enquanto o usurio no 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 nmeros da tabuada.

Prof. MSc. Liluyoud Cury de Lacerda

Programao em C#
1. Abra o Visual Studio 2005 2. Na rea Recent Projects selecione a soluo que voc criou no exerccio anterior (no nosso caso a Soluo Liluyoud)

48

3. Ao abrir sua soluo, selecione a pasta Console 4. Com o boto 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 Deciso. 7. Na rea Location informe o local onde voc deseja armazenar seu novo projeto, que o local onde sua soluo foi criada e dentro da pasta Console ( no nosso caso seria C:\Liluyoud\Console ).

Prof. MSc. Liluyoud Cury de Lacerda

Programao em C#
No se esquecendo de colocar o projeto atual como projeto padro (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 mtodo Main. A seguir temos um modelo de soluo para o problema.

49

using System; using System.Collections.Generic; using System.Text; namespace Repeticao { class Program { static void Main(string[] args) { int opcao; do { Console.WriteLine("\n\n[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(); } } }

Prof. MSc. Liluyoud Cury de Lacerda

Programao em C#
Como exemplo, temos a seguinte sada de execuo do programa:

50

SUBPROGRAMAS
Em cincia da computao , uma subprograma (funo ou procedimento) so cdigos includos dentro de programas de computador e relativamente independente do resto do cdigo do programa. Maurice Wilkes, Stanley Gill e David Wheeler so os inventores de subprogramas. Elas ajudam a estruturar o cdigo de forma organizada e simples, e fundamentam a estrutura de todo software em tempo de desenvolvimento. Um subprograma frequentemente uma funo chamada diversas vezes em diferentes momentos do programa, geralmente mais utilizada para programao estruturada, que distinguem funes, e procedimentos, outras linguagens como linguagem C e LISP no as distinguem. Na orientao a objetos os subprogramas so chamados de mtodos, onde procedimentos so mtodos que tem o tipo de retorno void e funes so mtodos que tem um tipo de retorno diferente de void. Subprogramas que so muito utilizadas em programas so includas da biblioteca padro da linguagem. Como utilizamos uma linguagem orientada a objetos, o C#, o que so definidos no programa so mtodos, que sero explicados com mais detalhes no prximo captulo, especfico para Orientao a Objetos. Como forma de explanao apenas, vamos definir por cima a sua sintaxe e forma de utilizao.

Sintaxe: Mtodos sem retorno


public static void Nome(Parmetros) { } Onde: Nome o nome do mtodo Parmetros uma lista separado por vrgula (que pode ser vazia) contendo todas as variveis (nome e tipo) a serem passadas ao mtodo

Mtodos com retorno


public static Tipo Nome(Parmetros) { ... return Tipo; } Onde: Tipo o tipo de retorno a ser passado pelo mtodo (pode ser um nmero, um texto, e at mesmo um objeto).

Prof. MSc. Liluyoud Cury de Lacerda

Programao em C#
Nome o nome do mtodo

51

Parmetros uma lista separado por vrgula (que pode ser vazia) contendo todas as variveis (nome e tipo) a serem passadas ao mtodo

Prof. MSc. Liluyoud Cury de Lacerda

You might also like