Apostila C-Sharp V10
Apostila C-Sharp V10
Apostila C-Sharp V10
Linguagem C#
Captulo Um
A evoluo das linguagens de programao incorpora, nas novas linguagens, os pontos fortes
de suas predecessoras e aperfeioa os pontos fracos; evidentemente, por se tratar de um novo
produto, novos defeitos podem ser inseridos, o que pode ser melhorado ou corrigido em
verses futuras. Outro aspecto relacionado com esta corrida evolutiva refere-se s novas
necessidades ou novos usos para estas linguagens, o advento da Internet comercial em 1995,
por exemplo, gerou uma demanda por linguagens comerciais que aumentassem a
produtividade dos programadores na criao e manuteno de programas para este ambiente
que prometia ser a nova plataforma de software da humanidade.
A linguagem C++, ainda muito utilizada nos dias de hoje, teve suas origens em 1967, quando
Martin Richards criou a linguagem BCPL, uma linguagem para a criao de software bsico
como, por exemplo, sistemas operacionais e compiladores. Ken Thompson, em 1970, criou a
linguagem B. B foi baseada na BCPL e foi utilizada para escrever as primeiras verses do
sistema operacional UNIX. BCPL e B eram linguagens sem definio de tipo, ou seja, o
tratamento do tipo de dado como texto ou nmero era de responsabilidade dos
programadores.
A linguagem C, desenvolvida em 1973 no Bell Laboratories por Dennis Richie. C utilizava muitos
recursos da BCPL e B e implementava tipagem de dados alm de recursos adicionais. C foi
muito utilizada para a criao do sistema operacional UNIX. Apesar disso, C est disponvel
para todas as plataformas e muito utilizada para a criao de muitos sistemas operacionais
que esto em uso at os dias atuais. C uma linguagem multiplataforma, ou seja, com um
projeto cuidadoso pode gerar programas portteis para a maioria dos computadores.
O C++ uma linguagem criada no incio dos anos 80 por Bjarne Stroustrup no Bell
Laboratories. C++ foi baseada na linguagem de simulao Simula 67 e na linguagem C. Uma
evoluo da linguagem C++ a incorporao de recursos de programao orientada a objetos
(POO). A POO foi uma resposta a alta demanda por software cada vez mais complexo e com
fortes requisitos de qualidade e confiabilidade. A principal idia por trs da POO era a
modelagem do mundo real em objetos ou componentes que pudessem ser reutilizados em
qualquer projeto de software. Esta estratgia, em tese, seria a soluo tcnica para escrever
software de alta qualidade, em prazos cada vez menores e economicamente viveis.
2
Captulo Um
Alm do C++ outras linguagens orientadas a objetos foram desenvolvidas como, por exemplo,
a Smalltalk, criada no Palo Alto Research Center (PARC) da Xerox. Smalltalk uma linguagem
orientada a objetos pura, ou seja, tudo em Smalltalk um objeto. C++, por sua, vez, permite
que sejam escritos programas orientados a objetos ou no, por isso considerada como uma
linguagem hbrida.
Com a popularizao dos computadores pessoais (PC) no incio dos anos 80 diversas empresas
de todos os tamanhos e segmentos de mercado perceberam que aquelas mquinas de
computar, antes acessveis apenas s grandes corporaes, poderiam ser teis aos seus
negcios. A demanda por aplicaes de software aumentou desde ento, juntamente com sua
complexidade. Os programas para gesto empresarial, os ERPs, comearam a se popularizar
nesta poca. Algumas empresas comearam a portar seus produtos da plataforma mainframe
para os PCs. As redes de computadores se desenvolveram e as necessidades de integrao de
software idem. Tudo isso gerou um caldeiro de programas e integraes necessrias. Como
desenvolver aplicaes dentro dos prazos necessrios aos negcios? Como aumentar a
produtividade? A linguagem C e C++, criadas em ambientes cujo propsito era a pesquisa
cientfica, no eram linguagens que atendiam s novas demandas do mercado.
Com o lanamento do ambiente operacional Windows no final dos anos 80 e incio dos 90, as
interfaces grficas (graphical user interface GUI) se desenvolveram e se popularizaram,
gerando outro tipo de necessidade por parte dos usurios de aplicaes para PCs, os softwares
com interface grfica. At ento a maioria das aplicaes tinham interfaces conhecidas por
caractere, por no apresentar nenhum elemento grfico e serem compostas totalmente por
letras, nmeros e alguns smbolos. Nesta poca qualquer programador experiente dominava
os cdigos da tabela ASCII para a criao de interfaces.
Neste cenrio a Microsoft lanou o Visual Basic (VB), uma evoluo do antigo BASIC. Na
realidade o VB era uma linguagem bastante diferente do BASIC, apresentando recursos de
interfaces grficas (janelas, botes, listas etc), tratamento de eventos (click do mouse em um
boto, por exemplo) e recursos de programao orientada a objetos (classes), apesar de no
se tratar de uma linguagem orientada a objetos. O VB se tornou uma das linguagens de
programao orientadas a eventos mais populares de todos os tempos.
3
Captulo Um
Na mesma poca em que o VB estava sendo desenvolvido existia uma aposta corporativa nos
dispositivos inteligentes, isto , uma geladeira poderia, atravs de um programa instalado
nela, verificar que seu usurio esqueceu-se de comprar ovos e ento acessar o servidor de um
supermercado local e fazer um pedido de uma dzia de ovos, que seriam entregues no
endereo indicado pelo software da geladeira.
Assim, para se preparar para este novo e promissor mercado, a Sun Microsystems iniciou, em
1991, um projeto de pesquisa denominado Green, liderado por James Gosling. Gosling a
denominou de Oak, em homenagem ao carvalho que observava da janela de sua sala, mas
depois descobriu que j existia uma linguagem com este mesmo nome. Um grupo de
funcionrios da Sun, aps visitar uma casa de cafs, sugeriu um novo nome: Java.
Inicialmente, por uma questo de mercado, a Sun teve dificuldades com a linguagem. O
mercado de dispositivos inteligentes no se desenvolveu como ela imaginava e o projeto corria
o risco de ser cancelado. Em 1993, com a possibilidade de abertura comercial da World Wide
Web a Sun reposicionou sua linguagem como sendo adequada para o desenvolvimento de
contedo dinmico, isto , contedo animado e interativo em pginas Web. Em maio de 1995
a Sun apresentou, formalmente, a linguagem Java ao mundo.
A Microsoft anunciou em julho de 2000 a sua estratgia para revolucionar o uso da Internet,
chamada Microsoft .NET. O Microsoft .NET um novo ambiente em tempo de execuo que
executado no sistema operacional Windows. Verses futuras do .NET devero ser integradas
ao sistema operacional. Um aspecto interessante da estratgia .NET a independncia de
linguagem ou plataforma especfica. Existem diversas linguagens de programao disponveis
para .NET e a especificao aberta, o que significa que qualquer empresa interessada pode
criar sua prpria linguagem para esta plataforma. Um mesmo projeto pode ter partes escritas
em Visual Basic .NET, C# (que ser apresentada mais adiante), Visual C++.NET entre outras.
Outra linguagem que faz parte do .NET a Active Server Pages, mais conhecida como ASP.NET,
uma linguagem voltada para o desenvolvimento de pginas Web dinmicas.
4
Captulo Um
O .NET Framework o produto por trs desta estratgia. O .NET Framework gerencia e
executa programas e servios Web, contm uma biblioteca de classes chamada Framework
Class Library (FCL), garante a segurana e fornece outros recursos de programao. Toda a
plataforma foi especificada atravs da Common Language Specification (CLS), que contm
todas as informaes sobre tipos de dados, objetos e outros detalhes da plataforma. A CLS foi
submetida para padronizao pela European Computer Manufaturer Association (ECMA). Isso
significa que qualquer um pode ter acesso s especificaes da plataforma .NET e construir
linguagens ou objetos para ela. Isso permitiu o desenvolvimento de projetos da plataforma
.NET para outros ambientes operacionais. Um projeto que se destaca o Mono. Mono um
projecto liderado pela Novell para criar um conjunto de ferramentas compatvel com a
plataforma .NET, conforme s normas ECMA, incluindo, entre outras, um compilador C# e um
CLR. O Mono pode ser executado nos sistemas operacionais Linux, BSD, UNIX, Mac OS X,
Solaris e Windows.
5
Captulo Um
C# foi desenvolvida por Anders Hejlsberg e Scott Wiltamuth especificamente para a plataforma
Microsoft .NET. C# foi baseada nas melhores caractersticas de C, C++ e Java, isso a torna
bastante familiar para muitos programadores, facilitando seu aprendizado e adoo. Hejlsberg
tambm ficou conhecido como o criador do Turbo Pascal e Delphi, quando era engenheiro de
software da Borland.
C# foi criada para atender s necessidades de uma linguagem que pudesse ser executada no
apenas em PCs como tambm nos diversos dispositivos disponveis, como celulares e Personal
Digital Assistentes (PDAs). Problemas de instalao, integrao entre estes dispositivos e
acesso a servios via Web tambm foram endereados em seu projeto.
Um IDE, gratuito, para aprendizado da linguagem C#, denominado Visual C# 2008 Express
Edition, est disponvel para download no site
6
Captulo Um
Referncias
Deitel, H. M., Deitel, P. J., Listfield, J. A. Nieto, T., Yaeger, C., Zlatkina, M., C# - Como Programar,
Pearson Makron Books, So Paulo, 2003.
7
Captulo Dois
Captulo Dois
Este captulo apresenta os recursos bsicos do IDE do Visual C# 2008 Express Edition,
doravante denominado Visual C#.
8
Captulo Dois
Para criar um novo projeto selecione File e depois New Project Figura 4.
Janelas de console so ideais para iniciar o aprendizado da linguagem C#, principalmente para
aqueles que esto aprendendo as tcnicas bsicas de programao de computadores. Por ter
um conjunto limitado de recursos, possvel focar o exerccio da lgica de programao
utilizando a linguagem C#. Posteriormente sero apresentados outros recursos da linguagem,
como as interfaces visuais, utilizao de controles, acesso de arquivos etc.
Cada projeto possui referncias a diversas bibliotecas (este assunto ser tratado em breve),
no exemplo observa-se as referncias s bibliotecas System.Data, System.Core, System.XML
etc.
9
Captulo Dois
Cada projeto tambm possui propriedades que so gerenciadas pelo prprio IDE. Estas
propriedades so registradas no arquivo Assembly.Info, que aparece na pasta Properties
tambm na janela Solution Explorer.
10
Captulo Dois
Sobre a localizao do onde o programa ser salvo vale comentar que ser criada uma pasta
(ou folder) com o nome da soluo indicada no campo Solution Name da janela Save
Project, conforme mostra a Figura 8. Dentro desta pasta sero copiados todos os arquivos
que compem a soluo criada. Para transportar a soluo para outro local necessrio
copiar a pasta que indica a soluo e todo seu contedo.
11
Captulo Dois
12
Captulo Trs
Captulo Trs
A definio das variveis que sero utilizadas no programa bem como seu tipo de dado
chamada de declarao de varivel.
Os tipos char e string so utilizados para manipular dados alfanumricos. O tipo char
opera com apenas um caractere enquanto string pode manipular uma sequncia de
qualquer tamanho.
13
Captulo Trs
int idade;
Exemplo 2: Declarando uma varivel para trabalhar com nmeros inteiros e a seguir atribuindo
um valor a ela.
int idade;
idade=20;
Exemplo 3: Declarando uma varivel para trabalhar com nmeros inteiros e a seguir atribuindo
um valor a ela, na mesma linha de comando.
int idade=20;
Exemplo 4: Declarando trs variveis para trabalhar com nmeros inteiros e a seguir
atribuindo um valor a ela, na mesma linha de comando.
14
Captulo Trs
string nome;
char sexo;
nome=Linguagem C#;
sexo=F;
Observaes:
Em uma mesma linha s podem ser definida variveis de um mesmo tipo de dado.
A atribuio de valor varivel pode ocorrer no momento de sua declarao ou
posteriormente.
A linguagem C# case sensitive, isso significa que ela diferencia maisculas de
minsculas, por exemplo, salMinimo e salminimo so duas variveis diferentes.
Valores do tipo string so delimitados por ... (aspas duplas) enquanto valores do tipo
char por ... (aspas simples). Observar o exemplo 6 atentamente.
S possvel utilizar uma varivel se ela for definida, ou seja, tiver seu tipo de dado
definido.
Tpico avanado
Cada tipo de dado, em C#, definido por uma classe. A Tabela 2 mostra as classes existentes
no .NET Framework que implementam cada um dos tipos de dados, por exemplo, o tipo int
implementado por System.Int32. Isso significa que quando este tipo utilizado dentro de um
programa, este, ao ser executado, busca em System.Int32 as propriedades e mtodos que
definem seu funcionamento.
15
Captulo Trs
Referncias
Deitel, H. M., Deitel, P. J., Listfield, J. A. Nieto, T., Yaeger, C., Zlatkina, M., C# - Como Programar,
Pearson Makron Books, So Paulo, 2003.
16
Captulo Quatro
Captulo Quatro
Neste captulo sero apresentados os comandos bsicos para entrada e sada de dados. Sero
utilizados exemplos de programa com estrutura simples, ou seja, programas divididos em
entrada de dados, processamento e sada ou apresentao de resultados. Estruturas
envolvendo deciso ou seleo e repetio sero vistas nos captulos seguintes.
Console.WriteLine(Aprendendo C#);
Console.WriteLine(9*(5+4));
Console.WriteLine(9+9*(5+4));
17
Captulo Quatro
Exemplo 4: Formatando uma sada. O exemplo abaixo mostra como resultado a expresso 9 X
5 = 45. Observar que a expresso entre aspas possui trs parmetros indicados por {0}, {1} e
{2}. Aps a expresso de sada apresentada uma lista contendo trs valores separados por
vrgula: 9, 5 e a expresso 9*5. O primeiro valor, o nmero 9 est associado com o primeiro
parmetro, {0}. O segundo valor, 5, est relacionado com o segundo parmetro, {1}.
Finalmente o terceiro valor, resultado de 9*5, ser apresentado na posio indicada pelo
ltimo parmetro, {2}.
Console.WriteLine({0:f3},(1.0/3.0));
Console.WriteLine({0:c},500);
Console.Write(Programao );
Console.Write(Linguagem );
Console.Write(C#);
18
Captulo Quatro
Exemplo 1: O programa solicita que o usurio informe dois nmeros e a seguir mostra sua
soma. Para converter a entrada de dados em um nmero inteiro utilizada a funo
Convert.ToInt32, que converte o dado entrado em um inteiro de 32 bits.
Exemplo 2: O comando solicita que o usurio informe o valor total da compra e a seguir
mostra calcula 5% deste valor e apresenta na tela e, por fim mostra o valor total subtrado do
desconto calculado. A funo Convert.ToDouble ser utilizada para converter o valor de
entrada para um nmero com casas decimais.
19
Captulo Quatro
Operadores Aritmticos
O resultado de uma expresso ser definido pelos tipos de dados envolvidos, prevalecendo o
de maior tamanho, por exemplo, a diviso entre dois inteiros resultar em um nmero
inteiro; a diviso entre um nmero decimal, por exemplo, do tipo double, por um inteiro,
resultar em um double, que tem maior preciso que o inteiro.
20
Captulo Quatro
11
10
10
Operadores de Atribuio
21
Captulo Quatro
Exerccios
22
Captulo Quatro
5. Faa um programa C# que mostre o resultado das variveis x,y e z depois da seqncia
de operaes:
x = 10, y = 10;
z = ++x;
x = -x;
y++;
x = x + y z--;
7. Faa um programa que, a partir das medidas dos lados de um retngulo, lidos via
teclado, calcule a rea e o permetro deste retngulo.
8. A condio fsica de uma pessoa pode ser medida com base no clculo do IMC, ndice
de Massa Corporal, o qual calculado dividindo-se a massa da pessoa (em kg) pela
altura da mesma (em m) elevada ao quadrado (IMC= m/(h*h)). Escreva um programa
que leia a massa e a altura de uma pessoa, calcule e mostre o IMC.
23
Captulo Cinco
Captulo Cinco
No captulo anterior foram apresentados exemplos de programas com estrutura simples, isto
, programas bsicos divididos em entrada de dados, processamento e sada ou apresentao
de resultados. No entanto este tipo de estrutura no suficiente para implementar programas
complexos, onde decises precisam ser tomadas sobre quais caminhos sero executados.
como se existissem, dentro de um nico programa, diversos programas de estrutura simples
que so executados apenas quando determinadas condies so satisfeitas, estes pequenos
programas so denominados blocos e o caminho tomado pelo programa principal
denominado ramo.
Para determinar qual o maior necessrio comparar x com y, o resultado desta comparao
determinar qual o maior.
A comparao entre dois nmeros pode ser realizada atravs da condio x > y. Se ela for
verdadeira ento o maior ser x, seno, sero y. Ou seja, aps a verificao da condio,
existem apenas dois caminhos que podem ser tomados e que apenas um ser executado.
Esta condio denominada instruo de seleo de dois ramos porque a sua execuo
seleciona uma das duas alternativas: ou o ramo ento, ou o ramo seno.
24
Captulo Cinco
Para implementar uma estrutura de seleo na linguagem C# utiliza-se o comando if. Sua
sintaxe para um nico ramo :
if (condio)
<bloco de cdigo>
if (condio)
<bloco de cdigo>
else
<bloco de cdigo>
Onde <bloco de cdigo> representa as linhas de comando que sero executadas e (condio)
representa uma expresso relacional que, ao ser avaliada, resulta em apenas uma entre duas
possibilidades: verdadeira ou falsa.
25
Captulo Cinco
A estrutura de seleo utilizada para resolver este problema chamada de Seleo Simples,
utilizada em situaes quando uma alternativa depende de uma condio.
double km,litros,desempenho;
Console.Write("Informe o total percorrido (km) :");
km = Convert.ToDouble(Console.ReadLine());
Console.Write("Informe o volume de combustvel (l) :");
litros = Convert.ToDouble(Console.ReadLine());
Console.WriteLine("Desempenho :{0:f1}",desempenho);
if (desempenho <= 5)
Console.WriteLine("EST NA HORA DE UMA REVISO!");
Exemplo 2: Implementao do algoritmo para verificar qual o maior nmero entre dois
informados.
A estrutura de seleo utilizada para resolver este problema chamada de Seleo Composta,
utilizada em situaes quando duas alternativas dependem de uma nica condio.
int x, y, maior;
Console.Write("Informe um valor para x=");
x = Convert.ToInt16(Console.ReadLine());
Console.Write("Informe um valor para y=");
y = Convert.ToInt16(Console.ReadLine());
if (x > y)
maior = x;
else
maior = y;
Console.WriteLine("{0} o maior nmero.",maior);
Exemplo 3: Programa para calcular a mdia aritmtica entre duas notas bimestrais e
apresentar o resultado aprovado caso a mdia seja maior ou igual a 5,0, ou reprovado,
caso contrrio.
A estrutura de seleo utilizada para resolver este problema chamada de Seleo Composta,
utilizada em situaes quando duas alternativas dependem de uma nica condio.
26
Captulo Cinco
Neste programa os blocos de cdigo da estrutura de deciso esto delimitados por chaves {},
isso porque cada bloco possui mais de uma linha de comando. No exemplo 1 as chaves no
aparecem porque o bloco de cdigo possui uma nica linha de comando.
O programa do exemplo 3 pode ser melhorado de forma que cada bloco de cdigo tambm
possua uma nica linha de comando. Como?
Exemplo 4: Uma loja oferece desconto de 10% para compras acima de R$1000,00, desconto de
5% para compras entre R$ 500,00 e R$1000,00 e 3% para abaixo de R$500,00. Faa um
programa que solicite o total da compra e mostre o valor do desconto e o total a ser pago pelo
cliente.
27
Captulo Cinco
Os exemplos acima utilizam condies simples que foram construdas utilizando-se operadores
relacionais como: media > 5 ou x > y. Para testar vrias condies so utilizados if aninhados.
Por exemplo, o bloco de cdigo da estrutura de seleo abaixo ser executado somente se as
duas condies simples forem verdadeiras.
if ((mediaSemestre>=7) || (notaExame>=7))
Console.WriteLine("Aprovado");
A seguir so apresentadas as Tabelas Verdade para os operadores lgicos && (And) e || (Or).
Exerccios
28
Captulo Cinco
1. Dados trs nmeros inteiros, desenvolver um programa que mostre qual o maior
entre eles utilizando estrutura de seleo aninhada com operadores lgicos e outro
com estrutura aninhada sem operadores lgicos.
3. Uma empresa decidiu dar uma gratificao de Natal a seus funcionrios, baseada no
nmero de horas extras e no nmero de horas que o funcionrio faltou. O valor do
prmio obtido pela consulta tabela abaixo, onde H o nmero de horas extras
subtrado de dois teros do nmero de horas-faltas. Faa um programa que solicite o
total de horas extras, o total de horas de o funcionrio faltou e, no final, calcule e
mostre o prmio do funcionrio. Na tabela abaixo, leia o intervalo (0,10] como:
maior do que zero e menor ou igual a dez, maior do que dez e menor ou igual a vinte
e assim sucessivamente.
4. Faa um programa C# para ler um cdigo. Caso o cdigo = 1, ler dois nmeros inteiros.
Se o segundo nmero for diferente de zero, exibir o resto da diviso do primeiro pelo
segundo. Seno, exibir a diviso inteira do primeiro nmero lido por 3. Se cdigo = 2,
ler um nmero inteiro. Se for positivo, exibir a sua raiz quadrada (use Math.Sqrt())
para calcular a raiz quadrada, se for negativo, exibir o seu valor absoluto. Se zero,
exibir a mensagem ZERO. Se o cdigo = 3, ler um nmero inteiro e exibir o seu
quadrado. Se cdigo diferente dos acima especificados, exibir a mensagem CDIGO
INVLIDO.
29
Captulo Cinco
Idade Categoria
5a7 Infantil A
8 a 10 Infantil B
11 a 13 Juvenil A
14 a 17 Juvenil B
18 a 39 Adulto
>39 Master
6. Dados trs valores inteiros A, B e C, verificar se eles podem ser os comprimentos dos
lados de um tringulo, em caso afirmativo, verificar se compem um tringulo
eqiltero, issceles ou escaleno. Informar se no compuserem nenhum tringulo.
Informaes:
Tringulo: figura geomtrica fechada de trs lados, em que cada um menor do que a
soma dos outros dois.
Tringulo equiltero: possui os trs lados iguais.
Tringulo issceles: possui dois lados iguais.
Tringulo escaleno: possui todos os lados diferentes.
+ operao de soma.
- operao de subtrao.
* operao de multiplicao.
/ operao de diviso (verificar se o divisor diferente de zero).
30
Captulo Seis
Captulo Seis
While
Do
For
Foreach
31
Captulo Seis
O loop While
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
int t = 1;
while (t <= 10)
{
Console.WriteLine(t * 9);
t = t + 1;
}
}
}
}
32
Captulo Seis
Exemplo 2: Uma nova verso para o programa da tabuada do nmero nove. Pergunta: onde
est sendo realizado o incremento da varivel de controle do looping?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
int t = 1;
while (t <= 10)
{
Console.WriteLine("9 X {0}={1}",t,t++* 9);
}
}
}
}
Exemplo 3: O programa abaixo solicita o preo de dez produtos e no final exibe o preo mdio.
Observar o incremento da varivel de controle do loop (varivel c) na primeira linha do bloco
de cdigo do loop. Notar que a mdia calculada dividindo-se o contedo da varivel media,
que acumulou todos os preos digitados, por (c-1) e no por, pois a varivel sai do looping com
o valor 11.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
double preco = 0, media = 0;
int c = 1;
while (c <= 10)
{
Console.Write("Preo do produto {0}=",c++);
preco = Convert.ToDouble(Console.ReadLine());
media += preco;
}
Console.WriteLine("Preo mdio = {0}", (media / (c-1)));
}
}
}
33
Captulo Seis
O loop Do
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
int numero, chute;
Console.Write("Escolha um nmero=");
numero = Convert.ToInt16(Console.ReadLine());
Console.Clear();
do
{
Console.Write("Tente adivinhar o nmero escolhido: ");
chute = Convert.ToInt16(Console.ReadLine());
if (chute == numero)
{
Console.WriteLine("Parabns! Acertou!");
}
else if (chute < numero)
{
Console.WriteLine("Chutou baixo!");
}
else
{
Console.WriteLine("Chutou alto!");
}
} while (chute != numero);
}
}
}
34
Captulo Seis
Exemplo 5: O programa a seguir mostra um menu com opes para o usurio selecionar. Aps
informada uma opo o programa verifica a opo selecionada e executa os comandos
associados em sistema real, seria chamada uma funo para executar o mdulo desejado. O
programa continua executando at que o usurio informe a opo para sair.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
string myChoice;
do
{
// Mostra o menu
Console.Clear();
Console.WriteLine("Cadernos de Endereos\n");
// Seleo do usurio
myChoice = Console.ReadLine();
35
Captulo Seis
case "s":
Console.WriteLine("Fim do programa.");
break;
default:
Console.WriteLine("{0} no uma opo
vlida", myChoice);
break;
}
O loop For
Nas estruturas vistas at agora o nmero de vezes que o bloco de cdigo ser executado
determinado por condies que no esto sob o controle do programa. Os blocos de cdigo
sero executados enquanto uma condio for verdadeira. No entanto existem situaes em
que o nmero de execues pr-determinado, onde no h uma condio os limites so
fixos.
Uma considerao importante que a varivel de controle incrementada aps a ltima linha
de comando do bloco de repetio ter sido executada. Neste exemplo, apesar do incremento
t++ estar definido na linha de comando do loop For, ele realizado apenas depois que a linha
do comando Console.WriteLine executada.
Observar que a condio, t <= 10, est sob controle do programa e no de um evento externo
a ele.
Como ltima observao, notar que a varivel t declarada dentro do comando For e,
portanto, ser visvel apenas dentro desta estrutura. Seu tempo de vida tambm est
associado ao tempo em que o bloco de cdigo da estrutura de repetio executado, ao seu
final ela ser liberada da memria.
36
Captulo Seis
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
for (int t = 1; t <= 10; t++)
Console.WriteLine("{0} X 9 = {1}", t, (t * 9));
}
}
}
Exemplo 7: Este exemplo mostra a utilizao de dois comandos: break e continue. O comando
break interrompe o fluxo de repetio e transfere o controle do programa para a prxima
linha de comando depois do bloco de cdigo de repetio. O comando continue interrompe o
fluxo de execuo, ignora os comandos restantes do bloco de cdigo, incrementa a varivel de
controle do looping e transfere o controle do fluxo para o comando for.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
for (int i = 0; i < 20; i++)
{
if (i == 10)
break;
if (i % 2 == 0)
continue;
Console.Write("{0} ", i);
}
}
}
}
37
Captulo Seis
O loop Foreach
O foreach utilizado para percorrer itens em uma lista, como um vetor, como exemplo. Para
percorrer os itens de uma lista necessrio declarar uma varivel de controle, do mesmo tipo
que os itens da lista. Enquanto os itens da lista so percorridos ela possui apenas acesso de
leitura.
Exemplo 8: O programa abaixo utiliza o foreach para percorrer todos os itens de uma lista di
tipo string. Notar que na declarao do foreach a varivel de controle discpulo tambm do
tipo string.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
string[] nomes = { "Pedro", "Paulo", "Jos", "Andr" };
Exerccios
2. Foi realizada uma pesquisa sobre as caractersticas de uma populao em uma regio,
a qual coletou os seguintes dados sobre a populao: Sexo (M-masculino, F-
feminino), Cor dos olhos (C-castanhos, V-verdes, A- azuis), Idade e Cor dos
cabelos (C-castanhos, L-louros, P-pretos). Faa um programa em C# (Console)
que determine: a) O habitante de maior idade, b) A percentagem dos habitantes do
38
Captulo Seis
sexo feminino, com idade entre 18 e 35 anos, com olhos verdes e cabelos louros. A
finalizao da pesquisa ocorrer quando for digitado -1 para a idade.
a
x0
2
1 a
xi 1 xi
2 xi
Onde i = 0, 1, 2, 3,...
Fazer um programa em C# (Console) para entrar via teclado com o valor de a e calcula
e exibir a dcima iterao (x10).
5. Uma empresa decidiu fazer um levantamento sobre o perfil dos candidatos que se
apresentarem para o preenchimento de vagas de seu quadro de funcionrios. Para
cada candidato ser solicitado o sexo, a idade e se tem ou no experincia no servio.
A entrada de dados ser encerrada quando for informado -1 para a idade. Escrever um
programa para ler os dados dos candidatos e, a seguir, calcular e imprimir as seguintes
informaes:
39
Captulo Sete
Captulo Sete
Vetor
Onde,
float[] indica ao compilador que ser criado um vetor cujos elementos sero do tipo
float.
40
Captulo Sete
vetTempSP2009[0]=30.1;
vetTempSP2009[1]=29.9;
vetTempSP2009[2]=27.9;
...
vetTempSP2009[11]=29.9;
A linguagem C# tambm permite que um vetor seja inicializado logo aps ter sido declarado,
como mostra o exemplo abaixo, que criar o vetor vetTempSP2009 e, em seguida, o inicializa:
A propriedade Length de um vetor contm sua quantidade de elementos e pode ser utilizada
na manipulao de um vetor sem que seja necessrio saber seu nmero total de elementos. O
looping for abaixo muito utilizado para percorrer todos os elementos de um vetor.
Exemplo 1: O programa abaixo cria um vetor para registrar as temperaturas mensais de 2009
na cidade de So Paulo, depois o programa percorre a estrutura de dados para somar os
valores registrados e, por fim, calcula e mostra a mdia do ano.
41
Captulo Sete
Exemplo 2: O programa abaixo mostra um exemplo que utiliza um vetor de chars (carateres)
e um looping que o percorre e conta as ocorrncias das letras A, B e C. A estrutura de
seleo Switch/Case utilizada para decidir sobre a letra armazenada no vetor.
char[] vetLetras = { 'A', 'C', 'B', 'A', 'C', 'C', 'A', 'B', 'A' };
int contaA = 0, contaB = 0, contaC = 0;
for (int j = 0; j < vetLetras.Length; j++)
{
switch (vetLetras[j])
{
case 'A':
contaA++;
break;
case 'B':
contaB++;
break;
case 'C':
contaC++;
break;
}
}
Console.WriteLine("Total de letra A = {0}", contaA);
Console.WriteLine("Total de letra B = {0}", contaB);
Console.WriteLine("Total de letra C = {0}", contaC);
Exemplo 3: O programa abaixo permite que o usurio carregue vetores com nomes e notas
bimestrais de alunos de uma turma. A quantidade de alunos na turma informada pelo
usurio, a seguir o programa instancia os vetores com a quantidade de elementos igual ao
tamanho da turma informado pelo usurio. Aps ler todos os dados, Figura 14, o programa
exibe uma listagem, Figura 15, contendo os nomes dos alunos, suas notas, mdia e resultado
final.
42
Captulo Sete
//limpa a tela
Console.Clear();
43
Captulo Sete
Existem diversas tcnicas que podem ser utilizadas para se ordenar os elementos de um vetor,
uma bastante conhecida devida a sua simplicidade de implementao o bubble sort ou
mtodo da bolha, ele tem este nome porque durante a aplicao do mtodo os valores
menores sobem em direo do primeiro elemento do vetor. No final, o menor valor est no
primeiro elemento e o maior no ltimo, resultado em um vetor ordenado.
44
Captulo Sete
Um dos problemas do bubble sorte o seu desempenho. Para vetores com muitos elementos
ele tende a ser lento, por isso, outros mtodos foram desenvolvidos, como o quick sort.
utilizada classe Random, que possui o mtodo Next, que gera nmeros aleatrios inteiros
entre 1 e 2.147.483.647.
Para comparar o tempo de processamento entre eles, antes da execuo de cada mtodo e
logo depois que o processamento concludo, exibida a hora (DateTime.Now).
45
Captulo Sete
A linguagem C# oferece um mtodo eficiente para realizar uma busca entre os elementos de
um vetor, o mtodo Array.BinarySearch(<vetor>,<valor>), pesquisa um determinado <valor>,
denominado chave de busca, dentro do <vetor> indicado. Array.BinarySearch() utiliza o
algoritmo de pesquisa binria, muito mais eficiente que realizar uma pesquisa seqencial ou
linear.
Para vetores ordenados, o algoritmo elimina metade dos elementos do vetor aps cada
comparao. O algoritmo procura o elemento do meio do vetor e compara com a chave, se
forem iguais ento a chave de busca foi encontrada e o algoritmo retorna a posio (ndice) do
valor dentro do vetor. Caso contrrio o problema reduzido pela metade, se o elemento do
46
Captulo Sete
meio for menor que a chave de busca ento a pesquisa continua na primeira metade do vetor,
caso contrrio, na segunda metade.
O programa abaixo declara e inicializa o vetor v1, cujos valores j esto ordenados. Para
situaes em que os valores esto desordenados, deve-se aplicar o mtodo Array.Sort() antes
de utilizar o mtodo de busca binria Array.Binary().
Quando Array.Binary() no encontra a chave de busca ele retorna um valor negativo, caso
contrrio retornar a posio ou ndice do elemento do vetor que possui a chave de busca.
Matriz
47
Captulo Sete
A seguir so criados dois loopings aninhados (um dentro do outro). O looping externo garante
que todas as linhas da matriz sero percorridas, o looping interno garante que todas as colunas
de uma linha sero percorridas.
Para determinar quantas linhas existem em uma matriz utilizado o mtodo GetLength(0).
Para determinar quantas colunas existem em uma matriz utilizado o mtodo GetLength(1).
No momento de calcular a mdia utilizado um recurso denominado casting, que fora uma
varivel de um tipo a atuar como sendo de outro tipo. No clculo da mdia utilizado
((float)soma/meses))
Ao invs de simplesmente:
(soma/meses))
No segundo caso, por envolver dois inteiros, a diviso retornar apenas a parte inteira do
quociente. Em C# se um dos operandos da diviso for um nmero decimal ento o resultado
tambm ser decimal. O recurso de casting indica ao compilador que determinada varivel ir
atuar como sendo do tipo indicado pelo casting e no o tipo que foi declarada no incio do
programa. O casting (float) na frente da varivel soma indica que soma participar da
operao como sendo um float e no como integer (seu tipo original).
48
Captulo Sete
Exerccios
2. Faa um programa que carregue um vetor com dez nmeros reais gerados
aleatoriamente, calcule e mostre a quantidade de nmeros negativos e a soma dos
nmeros positivos desse vetor.
49
Captulo Sete
5. Faa um programa que carregue um vetor, com um nmero de posies definidas pelo
usurio. Este vetor dever armazenar um conjunto de nomes em diferentes posies.
A seguir crie um mecanismo para alimentar elementos os vetor e pesquisar por um
valor existente. Exiba para o usurio um menu, como o exemplo abaixo, onde ele
possa escolher a funo que deseja executar.
==== ==============
1) Cadastrar nome
2) Pesquisar nome
3) Listar todos os nome
0) Sair do programa
==== ==============
Escolha uma opo:_
6. Faa um programa que receba uma matriz B[9][9] de reais e retorna a soma dos
elementos das linhas pares de B.
7. Faa uma funo que receba uma matriz A[12][12] e retorna um vetor com a soma de
cada uma das linhas de A.
8. Faa um programa que receba uma matriz A[12][12] e retorna a mdia aritmtica dos
elementos abaixo da diagonal principal.
50
Captulo Oito
Captulo Oito
Bloco de Cdigo
Quando um bloco comea a ser executado as variveis dentro dele so ativadas, isto , passam
a existir, e permanecem ativas at o trmino da execuo do bloco. Isto significa que as
variveis declaradas dentro de um bloco de cdigo existiro apenas dentro dele, ou seja, so
variveis locais.
51
Captulo Oito
O escopo de uma varivel de memria diz respeito a sua abrangncia ou visibilidade. Variveis
locais possuem visibilidade, isto , podem ser acessadas dentro do bloco de cdigo onde foi
declarada. Se um bloco de cdigo possui blocos de cdigo dentro dele ento as variveis
declaradas no bloco de cdigo mais externos tambm so visveis nos blocos internos. Neste
caso diz-se que a varivel global para todos os blocos internos.
Mtodos
Mtodos que no retornam valores so chamados de mtodos void. Void, em ingls, significa
oco ou vazio, neste caso, um mtodo void significa um mtodo cujo retorno vazio, ou seja,
nenhum valor de retorno. Nas linguagens estruturadas este tipo de mtodo chamado de
procedimento.
Um exemplo de mtodo void o mtodo Main() que foi utilizado at agora. Main() o mtodo
principal de uma aplicao C#, significa que a porta de entrada de uma aplicao. Quando
52
Captulo Oito
O programa principal apenas realiza a chamada do mtodo, que executado e depois retorna
o controle do processamento para a linha seguinte a que foi chamado. O programa principal
fica mais limpo, mais fcil de entender.
Esta separao tem outro benefcio, alm do isolamento j comentado anteriormente. Caso
um outro programa tenha a necessidade de utilizao de um mtodo que realize uma
operao de multiplicao, mais fcil copiar os comandos referentes multiplicao quando
eles esto empacotados como mtodos do que retir-los do corpo do programa principal. Ao
copiar o mtodo estamos copiando tudo que necessrio para que ele funcione em outro
programa, pois ele, de certa forma, est isolado do resto do programa.
53
Captulo Oito
Em casos onde o mtodo deve ser executado e retornar algum valor para o programa que o
chamou necessrio definir o tipo de dado que o mtodo retornar. Esta definio feita na
declarao do mtodo. Nas linguagens estruturadas este tipo de mtodo chamado de
funo.
Como exemplo o programa anterior ser alterado para utilizar mtodos que retornam valores.
54
Captulo Oito
break;
}
}
Passagem de parmetros
Alteraes realizadas nas variveis dos mtodos, correspondentes aos parmetros passados,
no afetam o valor das variveis utilizadas na chamada do mtodo.
class Program
{
static void Main(string[] args)
{
int x = 0;
execMetodo(x);
Console.WriteLine(x);
}
55
Captulo Oito
Alteraes realizadas nas variveis dos mtodos, correspondentes aos parmetros passados,
afetam o valor das variveis utilizadas na chamada do mtodo.
No exemplo a seguir o valor original da varivel X alterado pelo mtodo execMetodo atravs
do parmetro Z.
class Program
{
static void Main(string[] args)
{
int x = 0;
execMetodo(ref x);
Console.WriteLine(x);
}
Parmetros de sada
56
Captulo Oito
Nesta forma de passagem de parmetros o mtodo define um vetor precedido pela palavra
reservada params, indicando que os parmetros passados sero atribudos aos elementos do
vetor. O exemplo a seguir realiza a soma de todos os elementos de um vetor.
Os valores passados devem ser do mesmo tipo de dado do vetor params do mtodo.
57
Captulo Nove
Captulo Nove
Formulrios Windows
Figura 16 Formulrio
58
Captulo Nove
Caso a janela Properties no esteja visvel, selecione a opo Properties Windows, no menu
View Figura 18.
59
Captulo Nove
Para alterar o ttulo do formulrio utiliza-se a propriedade Text. Na Figura 16, o ttulo do
formulrio Form1, para alter-lo para Sistema Gerencial, por exemplo, necessrio clicar
em qualquer lugar do formulrio, para torn-lo ativo e depois procurar a propriedade Text na
janela de propriedades. Na Figura 17 pode ser observado que o objeto selecionado um
formulrio e que sua propriedade Text contm a informao Form1. Para alter-la basta
clicar sobre a palavra Form1 e digitar Sistema Gerencial e depois pressionar ENTER. Note
que o ttulo alterado instantaneamente no formulrio Figura 19.
O estilo padro de um formulrio Sizable, o que significa que o usurio pode alterar seu
tamanho quando o programa estiver em uso. Para alterar o estilo da borda para um que no
permita que o usurio altere as definies de tamanho do formulrio, definidas em tempo de
desenvolvimento, basta selecionar o formulrio, para torn-lo ativo e procurar a propriedade
FormBordeStyle e selecionar o item FixedSingle, onde o estilo da borda fixo.
Os botes para maximizar e minimizar o formulrio, que aparecem no canto superior direito
do formulrio podem ser configurados atravs das propriedades MaximizeBox e MinimizeBox.
Para ambas as propriedades, se o valor da mesma estiver definido como true (verdadeiro), o
boto correspondente ser visvel, caso contrrio, isto , false, o boto no ser apresentado.
60
Captulo Nove
A propriedade Name define o nome pelo qual o objeto, neste caso, o formulrio, ser
referenciado no programa. Tem a mesma funo que o nome de uma varivel de memria.
Esta propriedade deve ser definida logo que o formulrio criado para evitar problemas de
referncia de nomes dentro do cdigo fonte.
A ToolBox, Figura 20, por padro exibida do lado esquerdo na janela de projetos do C#. Caso
ela no esteja visvel possvel ativ-la atravs da opo ToolBox no menu View.
Para utilizar adequadamente cada controle necessrio entender sua funo, suas
propriedades e seus eventos.
61
Captulo Nove
O controle Label, do ingls rtulo, serve para rotular ou mostrar um texto em qualquer parte
do formulrio. O texto a ser exibido pode ser definido durante o projeto ou durante a
execuo do programa e deve ser atribudo propriedade Text.
O controle TextBox serve para entrada e exibio de dados. Equivale a um campo para entrada
de dados. O valor atribudo ao campo TextBox definido atravs da propriedade Text. Toda
informao armazenada em um controle TextBox tratada como sendo do tipo texto (String).
O controle Button, boto em ingls, utilizado para disparar eventos (aes) quando o boto
pressionado. O texto que aparece no boto definido na propriedade Text, os comandos
que sero executados quando se clicar no boto sero definidos no evento Click.
62
Captulo Nove
Eventos
Cada boto ter seu evento Click distinto. Isto , o boto de nome Button1 possuir um evento
Click que poder ser programado conforme necessidades do programa, o boto Button2
possuir um evento Click que tambm poder ser programado independentemente do evento
Click do Button1. Para que no haja confuso importante nomear corretamente cada
controle do formulrio.
Exemplo 1: Formulrio com Button e TextBox. Ao disparar o evento Click do Button uma
mensagem atribuda TextBox. Repare no nome dos controles.
63
Captulo Nove
64
Captulo Nove
h. Para alterar a propriedade Name do Button: clique sobre ele e procure a propriedade
Name na lista Properties (lado inferior direito da tela). Digite btnOK.
i. Para alterar a propriedade Name da TextBox: clique sobre ela e procure a propriedade
Name na lista Properties. Digite txtMensagem.
j. Para alterar a propriedade Text do Button: clique sobre ela e procure a propriedade
Text na lista Properties. Digite Clique aqui.
k. Para alterar a propriedade Text do Form: clique sobre uma rea vazia do formulrio e
procure a propriedade Text na lista Properties. Digite Exemplo 1. Note que a
mensagem Exemplo 1 aparecer na barra de ttulo do formulrio. Ver Figura 24.
l. Para programar o evento Click do boto btnOK d um duplo-clique sobre ele. A janela
para edio do evento ser exibida.
m. Na janela para edio do evento Click do boto btnOK digite o trecho de cdigo
conforme Figura 25. No exemplo a mensagem Alo mundo! ser sendo atribuda
propriedade Text da TextBox txtMensagem.
n. Execute o programa e veja o que acontece quando voc clicar no boto.
65
Captulo Nove
Exemplo 2: Este exemplo mostra como trabalhar com informaes numricas em controles
TextBox. O formulrio abaixo implementa um programa bem simples, uma TextBox, cujo valor
inicial 1 (um), tem seu valor incrementado ou decrementado conforme os boto + e - so
pressionados.
Os eventos Clik de cada boto so apresentados abaixo. Note que necessrio realizar
converses de tipo de dados para manipular o valor da TextBox. A converso necessria
para realizar a operao aritmtica e depois para exibir o valor atualizado na TextBox.
66
Captulo Nove
Exerccios
1. Implemente uma calculadora conforme a figura abaixo. Tratar divises por zero para
no ocorrer falhas.
67
Captulo Nove
2. Uma eleio possui trs candidatos: Chico, Z e o Tonho, alm das opes Branco e
Nulo.
Controle ListBox
O controle ListBox, mostra uma lista de itens (opes) que podem ser selecionados pelo
usurio. A seguir so apresentados alguns mtodos relacionados ao controle ListBox.
Mtodo Descrio
SelectedIndex Retorna o ndice referente ao item selecionado (base Zero).
SelectedItem Retorna o item selecionado.
FindString Procura um item na lista que inicia com uma string. Retorna -1
se no encontrar.
Items.Add Adiciona itens na lista.
Items.RemoveAt Remove um item da lista.
Items.Clear Remove todos os itens da lista.
Exemplo 1: Este exemplo mostra uma lista simples de cidades. A cidade selecionada ser
exibida em uma TextBox, bem como seu ndice (posio) na lista, notar que o ListBox, assim
como os vetores, so indexados a partir do valor zero. Observar que os itens so carregados na
ListBox no evento Load do formulrio.
68
Captulo Nove
Exemplo 2: Este exemplo exibe um formulrio e dois botes. No evento click do primeiro
boto so gerados mil nmeros aleatrios e carregados na ListBox. No evento click do segundo
boto todos os itens da ListBox so eliminados.
69
Captulo Nove
Exemplo 3: Este exemplo adiciona uma funcionalidade ao exemplo anterior: um boto que
ordena os itens de uma lista. Se a propriedade Sorted estiver ativada (Sorted = True) ento os
itens da lista sero ordenados de forma ascendente.
70
Captulo Nove
Exemplo 4: O prximo exemplo mostrar como adicionar um item a uma lista, a partir da
informao contida em uma TextBox.
lstCidade.Items.Add(txtCidade.Text);
}
//Limpa o campo cidade
txtCidade.Clear();
//Coloca o cursor no campo txtCidade
txtCidade.Focus();
}
Observar, na Figura abaixo, que o boto Selecionar est selecionado. Isso ocorre porque ele
est definido como o boto que ser executado quando a tecla ENTER for pressionada. Para
definir esta propriedade necessrio indicar o nome do boto na propriedade AcceptedButton
do formulrio. Este recurso melhora bastante a produtividade do usurio da interface uma vez
que pode disparar um comando a partir do teclado, sem precisar utilizar o mouse.
71
Captulo Nove
2. Para evitar o problema dos espaos em branco, s vezes digitados pelos usurios,
utiliza-se o mtodo Trim, que remove os espaos em branco do incio e fim da string.
Acrescente um boto com o texto Remover todos os itens. No evento Click deste boto
digite o cdigo abaixo:
lstCidade.Items.Clear();
72
Captulo Nove
73
Captulo Nove
Exerccio
1. Implementar cada um dos quatro botes do formulrio abaixo. > deve mover o item
selecionado para a lista da direita. >> deve mover todos os itens da lista da esquerda
para a lista da direita. < e << devem funcionar analogamente aos outros botes,
mas no caminho inverso.
RadioButton permite que o usurio selecione uma nica opo dentre um grupo de opes.
Quando o usurio seleciona uma opo, o outro RadioButton desmarcado
automaticamente.
RadioButton e CheckBox possuem funes similares: eles oferecem opes para o usurio
escolher. A diferena que mltiplas selees simultneas so permitidas pelo
CheckBox enquanto o RadioButton mutuamente exclusivo.
74
Captulo Nove
75
Captulo Nove
Exemplo 7: O exemplo a seguir utiliza o controle CheckBox. Ao ser selecionada uma regio do
pas, uma lista carregada com as capitais dos estados da regio selecionada. O cdigo a
seguir (incompleto) mostra uma funo denominada PoeNaLista que recebe como parmetros
uma matriz, contendo os dados necessrios relacionados s regies e capitais, e uma string
que indica a regio selecionada.
namespace ExemploBotaoRadio
{
public partial class Form1 : Form
{
string[,] capital = new string[10,2];
public Form1()
{
InitializeComponent();
}
76
Captulo Nove
capital[4, 0] = "N";
capital[4, 1] = "Porto Velho";
capital[5, 0] = "S";
capital[5, 1] = "Curitiba";
capital[6, 0] = "S";
capital[6, 1] = "Florianpolis";
capital[7, 0] = "S";
capital[7, 1] = "Porto Alegre";
}
}
}
77
Captulo Dez
Captulo Dez
Formulrios MDI
Formulrios MDI so containers para outros formulrios. Vrios formulrios filhos podem ser
abertos dentro de um formulrio MDI (ou formulrio pai). Isso serve para organizar todos os
formulrios de uma aplicao dentro de um nico objeto, o formulrio MDI.
Para definir um formulrio como MDI basta definir a propriedade IsMDIContainer como True.
Controle MenuStrip
78
Captulo Dez
79
Captulo Dez
11) D um duplo-clique no menu Sair. Ser aberta a rea para codificao. Informe o
comando que ser executado ao ser selecionado a opo Sair.
80
Captulo Dez
19) Abra o formulrio principal (d um duplo clique no nome dela na janela Solution
Explorer ele aparece com o nome Form1.cs)
20) No menu, d um duplo-clique na opo Somar.
21) Digite o cdigo abaixo, responsvel por abrir o formulrio.
22) Execute o programa. Tente abrir mais de uma instncia do formulrio Somar. O que
acontece?
23) Altere o cdigo do menu Somar de acordo com o apresentado abaixo, para resolver o
problema observado.
81
Captulo Dez
82
Captulo Onze
Captulo Onze
StreamReader
StreamWriter
try
83
Captulo Onze
lstCidades.Items.Add(linha);
linha = sr.ReadLine();
sr.Close();
catch
84
Captulo Onze
lstCidades.SelectedIndex = j;
sw.WriteLine(lstCidades.SelectedItem);
//Fecha o arquivo
sw.Close();
Exerccio
1. Implementar ...
85
Captulo Onze
86
Captulo Onze
87
Captulo Onze
88
Captulo Onze
89
Captulo Onze
sr.Close();
}
90
Captulo Onze
rows.Add(pedido[i,6],pedido[i,7],pedido[i,8],pedido[i,9],pedido[i,10]);
}
}
}
91
Captulo Onze
92