You are on page 1of 41

C#

CONCEITOS, VARIVEIS, CONSTANTES, TIPOS, OPERADORES, INSTRUES DE SELEO,


INSTRUES DE REPETIO E ARRAYS

Organizado por: Tiago Kautzmann (www.tiagokautzmann.com.br)

Sumrio
Introduo ...............................................................................................................................................................3 Linguagem de programao C#, Visual Studio, .Net Framework e Commo Language Runtime (CLR) ...................4 Criando a primeira aplicao de console de comando com C# e o Visual Studio 2010 ..........................................7 Mtodos da classe Console para entrada / sada de dados na aplicao em console de comando. ................... 16 Instrues ............................................................................................................................................................. 17 Entendendo Instrues..................................................................................................................................... 17 Identificadores ...................................................................................................................................................... 18 Palavras reservadas no C# (palavras-chave)..................................................................................................... 18 Variveis e tipos de dados .................................................................................................................................... 20 Declarando variveis ........................................................................................................................................ 20 Nomeando variveis ..................................................................................................................................... 21 Tipos de Dados ................................................................................................................................................. 21 Atribuindo valor s variveis no C# .................................................................................................................. 22 Operadores ........................................................................................................................................................... 24 Operadores de Atribuio ................................................................................................................................ 24 Operadores aritmticos .................................................................................................................................... 24 Operadores relacionais..................................................................................................................................... 25 Operadores lgicos ........................................................................................................................................... 26 Operadores de incremento / decremento ....................................................................................................... 26 Precedncia de operadores .............................................................................................................................. 27 Constantes ............................................................................................................................................................ 28 Inserindo comentrios no cdigo C# .................................................................................................................... 29 Estruturas de Deciso / Instrues de Seleo..................................................................................................... 30 Instruo de seleo if ...................................................................................................................................... 30 Instruo de seleo switch.............................................................................................................................. 32 Estruturas de repetio / instrues de repetio ............................................................................................... 34 Instruo de repetio while ............................................................................................................................ 34 Instruo de repetio for ................................................................................................................................ 35 Instruo de repetio do................................................................................................................................. 36 Instrues break e continue ............................................................................................................................. 36 Arrays .................................................................................................................................................................... 38 Declarando variveis de arrays ......................................................................................................................... 38 Criando uma instncia de um array.................................................................................................................. 38 Inicializando variveis de array......................................................................................................................... 39 Acessando um elemento de um array .............................................................................................................. 39 Percorrendo os elementos de arrays ............................................................................................................... 39 Bibliografia ............................................................................................................................................................ 41

Introduo
O objetivo desta apostila apresentar as principais instrues para o desenvolvimento de aplicaes com a linguagem de programao C#. So conceitos fundamentais na rea de programao de computadores, como declarao de variveis, tipos de dados, operadores, instrues de deciso e repetio e vetores. Para a elaborao desta apostila, foi utilizada a verso 2010 do Microsoft Visual Studio, mas todos os conhecimentos podem ser aplicados em qualquer verso do programa. Todos os exemplos sero apresentados atravs da criao de aplicaes de linha de comando (Console Application). Uma aplicao de Console uma aplicao executada em prompt de comando, e que no dispe de nenhum recurso visual como janelas, caixas de dilogo, botes ou imagens. O objetivo de apresentar os conhecimentos fundamentais da linguagem de programao C# em uma aplicao Console o de nos focarmos na linguagem de programao e seu cdigo e no em recursos visuais. Importante lembrar que todos os conhecimentos (com exceo de duas instrues de entrada e sada de dados, especficas para uma Console Application) podero ser aplicados em qualquer outro tipo de aplicao no Visual Studio, como Windows Forms Applications e Web Applications.

Linguagem de programao C#, Visual Studio, .Net Framework e Commo Language Runtime (CLR)
Antes de iniciarmos os estudos sobre os fundamentos bsicos de programao de computadores utilizando a linguagem de programao C#, importante que o leitor saiba reconhecer algumas tecnologias envolvidas: Linguagem de programao C# O C# uma linguagem de programao orientada a objetos e a mais poderosa linguagem de programao da Microsoft. Se voc j conhece uma linguagem de programao como C, C++ ou Java, notar que a sintaxe do C# muito parecida com as linguagens citadas. Se o leitor est acostumado a programar em algumas dessas linguagens, ser capaz de assimilar rapidamente a sintaxe e o modo de trabalhar no C#. Visual Studio O Visual Studio um ambiente de desenvolvimento integrado (IDE) da Microsoft, ou seja, um programa para desenvolvimento de software. Pode ser utilizado para desenvolver aplicaes executadas em prompt de comando (console) e aplicaes com interface grfica para o sistema operacional Windows e para ambiente web. O Visual Studio suporta diferentes linguagens de programao como as linguagens C, C++, Visual Basic, C#, F#, alm de outras, e possui inmeros recursos que facilitam o desenvolvimento de aplicaes. .Net Framework O .Net Framework, da Microsoft, um framework de software para o sistema operacional Windows. Entenda framework como uma biblioteca de componentes que auxiliam a programao. Alm de possuir uma biblioteca de componentes, o framework .Net possui o que chamamos de mquina virtual, um meio de campo entre a aplicao desenvolvida e o sistema operacional onde o software ser executado. Possui uma idia semelhante plataforma Java, onde o programador deixa de escrever para um sistema operacional especfico, e passa a escrever para a plataforma .Net. (para a mquina virtual). Na sequncia apresentado um grfico que ajuda a explicar um pouco do funcionamento da plataforma .Net Framework.

O grfico apresenta alguns detalhes sobre o funcionamento da plataforma .Net Framework. Mostra que podemos programar com qualquer uma das 20 linguagens suportadas pelo .Net Framework, apesar de sabermos que a mais utilizada nesta lista a linguagem C#. Na imagem, porm, so mostradas as linguagens C#, VB.Net e F#, mas qualquer outra das 20 linguagens suportadas poderiam ser representadas no grfico. Quando compilamos nossos programas, o cdigo fonte transformado pelo compilador da linguagem em uma linguagem intermediria chamada MSIL (Microsoft Intermediate Language), ou simplesmente IL. A linguagem intermediria executada ento, por uma mquina virtual (mesmo conceito utilizado na linguagem Java) que chamamos de Commom Language Runtime (CLR), que faz parte da plataforma .Net. O CLR como se fosse a mquina virtual do Java. Nossos programas so executados na CLR, que responsvel por se comunicar com o sistema operacional. A CLR fornece outros servios importantes como segurana e gerenciamento de memria. No momento da execuo do programa, a linguagem intermediria compilada pela CLR para o cdigo nativo, de baixo nvel, que ser executado pelo sistema operacional. Em linguagens de programao mais antigas, como o Delphi, por exemplo, o cdigo fonte compilado diretamente para o cdigo nativo, de baixo nvel, para ser executado pelo sistema operacional. Na plataforma .Net Framework no, o programa compilado duas vezes, uma para a linguagem intermediria, de execuo da CLR e uma segunda vez, para o sistema operacional.

6 Com uma idia semelhante plataforma Java, o programador deixa de escrever cdigo para um sistema ou dispositivo especfico, e passa a escrever para a plataforma .Net. Isso significa que nossos programa sero executados em qualquer plataforma (sistema operacional) que suporte o .Net Framework. O .Net Framework constitudo pelo CLR e por uma biblioteca de classes que disponibiliza inmeras funcionalidades para o programador.

Criando a primeira aplicao de console de comando com C# e o Visual Studio 2010


Antes de iniciarmos o estudo sobre a linguagem de programao C#, criaremos uma pequena aplicao que visualiza uma pequena mensagem na tela. Criaremos a tradicional aplicao Hello World. Para comear, entre no Visual Studio;

A imagem anterior apresenta o Visual Studio 2010 assim que o iniciamos. exibida a pgina Start Page onde podemos abrir os ltimos projetos criados atravs da caixa Recent Projects. Para criarmos nosso primeiro programa em C# no Visual Studio 2010, criaremos um novo projeto, clicando no menu FILE, opo NEW, clicando em PROJECT... (CTRL + SHIFT + N). A caixa de dilogo NEW PROJECT aberta. Ela permite que criemos um novo projeto utilizando vrios templates, como um Windows Forms Applications, ASP.Net Web Application, Class Library, Console Application e vrios outros. Nesta apostila, criaremos projetos utilizando o template Console Application, que uma aplicao de execuo em linha de comando. Se fossemos criar uma aplicao para o Windows (com janelas, caixas de dilogo e botes), utilizaramos o template Windows Forms Application. Se fossemos criar uma aplicao para a web, utilizaramos o template ASP.Net Web Application.

Em Installed Templates, clique em Visual C#. No painel direita, sero visualizados todos os templates disponveis para a linguagem C#. No painel com os templates, clique em Console Application. No campo Name digite HelloWorld. No campo Location, voc define o local onde a aplicao ser salva. Clique em OK.

O painel SOLUTION EXPLORER mostra os nomes dos arquivos associados ao seu projeto. Para abrir cada arquivo, basta dar um clique duplo para exibi-lo no painel de cdigo (code pane). Confira algumas caractersticas dos arquivos que o visual Studio criou como parte do novo projeto Console Application: HelloWorld.csproj o arquivo do projeto C#. Pode ser associado a vrios arquivos de cdigo. reconhecido no Solution Explorer pelo nome do projeto apenas, no entanto gravado no disco com a extenso .csproj. Program.cs um arquivo de cdigo do C#. Voc vai escrever seu cdigo neste arquivo. O Visual Studio j adicionou algum cdigo nele automaticamente. AssemblyInfo.cs um outro arquivo de cdigo do C#. Voc pode usar esse arquivo para adicionar atributos ao programa, como por exemplo, nome do autor, data que o programa foi escrito e outros.

Para visualizar os arquivos do projeto no Windows Explorer, clique com o boto direito do mouse sobre o nome da aplicao (HelloWorld), e clique na opo Open Folder in Windows Explorer.

O arquivo Program.cs define uma classe chamada Program que contm um mtodo chamado Main. Todos os mtodos precisam ser definidos dentro de uma classe. O mtodo Main especial porque ele o primeiro a ser executado quando o programa iniciado, por isso ele precisa ser designado como static (esttico). Os conhecimentos apresentados no pargrafo anterior so relacionados a um paradigma existente na programao de computadores chamado de programao orientada a objetos. Este paradigma de programao orientado a objetos no ser alvo de estudo desta apostila. Nesta apostila sero apresentados apenas conhecimentos fundamentais relativos programao de computadores, como declarao de variveis, operadores, instrues condicionais e de repetio, vetores e matrizes, entre outros. Portanto, para este material e para nossos programas iniciais, saiba apenas, por enquanto, que colocaremos nosso cdigo dentro do mtodo Main, pertencente classe Program, no arquivo Program.cs.

Importante: A linguagem de programao C# case-sensitive, ou seja, ela diferencia letras minsculas de maisculas, onde um M interpretado diferente de um m. Consequentemente, Main diferente de main.

Nosso primeiro exemplo bem simples, e um clssico para quem est aprendendo qualquer linguagem de programao. Ele escreve a string Hello World na tela, no caso, no console (linha de comando).

10

Dentro do mtodo Main, entre colchetes, digite Console.

Estamos utilizando a classe Console, que possui mtodos para exibir mensagens na tela (em prompt de comando) e pegar as entradas do teclado. Tudo o que o usurio digita no teclado pode ser lido atravs da classe Console. A classe Console s significante para aplicaes que rodam no prompt de comando (linha de comando), como neste nosso primeiro exemplo: Agora digite um ponto depois de Console. Uma lista aparece logo aps digitar um ponto. A lista chamada de IntelliSense, que no um recurso exclusivo do Visual Studio, e que ajuda muito na programao, principalmente em linguagens case-sensitive, como o C#. O IntelliSense exibe todos os mtodos, propriedades e campos da classe.

11

Na lista do IntelliSense, selecione o mtodo WriteLine, usando o mouse ou teclado, e tecle Enter ou d um duplo clique sobre o WriteLine. O IntelliSense fechado e o mtodo WriteLine adicionado ao cdigo.

12

IMPORTANTE: Um mtodo um conjunto de instrues que define um comportamento de uma classe ou objeto. No caso, o mtodo WriteLine um mtodo da classe Console que tem a funo de escrever uma string (mensagem) na tela (na linha de comando). Abra parnteses ( mostrado uma outra forma do IntelliSense, que mostra os parmetros do mtodo WriteLine. O mtodo WriteLine tem o que chamamos de sobrecarga (overload). Para cada sobrecarga do mtodo WriteLine usamos parmetros diferentes. Cada sobrecarga e seus respectivos parmetros podem ser visualizados clicando com o mouse na seta do IntelliSense ou navegando pelas setas do teclado. Conhecimentos relativos sobre mtodos, como a sobrecarga (overload) no alvo de estudo dessa apostila.

13

Feche o parnteses ) e digite ponto-e-vrgula.

Digite entre os parnteses a string Hello World. Vamos aprender sobre tipos de dados nesta apostila, mas por enquanto o importante saber que string um tipo de dado.

14

Pronto. Nossa aplicao que mostra uma mensagem com a string Hello World esta pronta. O mtodo Main, da nossa classe Program possui apenas uma nica instruo. Esta instruo chama o mtodo WriteLine (que escreve uma mensagem na linha de comando) da classe Console, passando como parmetro a string Hello World. Vamos agora compilar nossa aplicao, ou seja, transformar nosso cdigo de alto nvel para um cdigo de baixo nvel, que permita a execuo da aplicao. No menu Debug, clique em Start Without Debugging para executar a aplicao no prompt de comando.

O programa escreve a mensagem Hello World no prompt de comando. Pressione qualquer tecla para sair do prompt de comando. Na janela Solution Explorer, clique no boto Show All Files.

Aparece em nosso projeto os nomes bin e obj. Essas pastas so criadas quando voc executa a aplicao e contm uma verso executvel do programa e outros arquivos necessrios para depurar o programa. No Solution Explorer, clique no sinal de + esquerda do nome bin. Um outro nome aparece, representando a pasta chamada debug. Clique no sinal de + esquerda do nome debug.

15

Repare nos arquivos: HelloWorld.exe e HelloWorld.pdb. O arquivo .exe o executvel da aplicao. O arquivo .pdb contm informaes sobre a depurao da aplicao. Como vimos at agora, o Visual Studio compilou automaticamente nosso programa e criou os arquivos necessrios automaticamente, durante o processo de compilao. Em resumo, compilao o processo que transforma seus arquivos fonte (escritos em uma linguagem de programao de alto nvel, como C#) em um arquivo executvel (com linguagem de baixo nvel) pelo sistema operacional, um .exe, por exemplo.

16

Mtodos da classe Console para entrada / sada de dados na aplicao em console de comando.
Lembro que todos os exemplos desta apostila sero executados em aplicaes com o template Console Application, ou seja, desenvolveremos aplicaes que rodaro no prompt de comando (console de comando). E muitos dos exemplos se utilizaro de comandos para imprimir mensagens na tela (dados de sada) e comandos que fazem a leitura da digitao do teclado (dados de entrada). Mtodo de Entrada de Dados: Para a entrada de dados, ou seja, para que a aplicao capture um valor digitado pelo usurio no teclado (entrada de dados), utilizaremos o mtodo ReadLine da classe Console, que retorna um dado do tipo string com o valor digitado no teclado . Exemplo:
String nome = Console.ReadLine();

No exemplo acima, temos uma varivel identificada como nome, do tipo string, que recebe o retorno do mtodo ReadLine da classe Console. Ou seja, a varivel string recebe o valor do que foi digitado no teclado pelo usurio. Mtodo de Sada de Dados: Para a sada de dados, ou seja, para imprimir na tela alguma informao, utilizaremos em nossos exemplos o mtodo WriteLine da classe Console, que imprime na tela do prompt de comando um valor que passado por parmetro. Exemplo:
Console.WriteLine("Bem-vindos ao programa");

No exemplo acima, temos uma chamada ao mtodo Writeline, da classe Console, que imprime no prompt de comando o valor passado como parmetro, no caso, o valor do tipo string Bem-vindos ao programa. Em todos os exemplos desta apostila em que tivermos a entrada e sada de dados, utilizaremos os dois mtodos apresentados acima. As duas instrues apresentadas acima so as nicas instrues que s funcionaro em uma aplicao do tipo Console Application. Todas as demais instrues apresentadas nesta apostila funcionaro em outros tipos de aplicaes, como Windows Forms Applications e Web Applications.

17

Instrues
Entendendo Instrues
Uma instruo um comando que executa uma ao. Voc combina instrues para criar blocos de instrues ou mtodos (mtodos no sero abordados em detalhes nesta apostila, mas saiba que um mtodo um conjunto de instrues que determina um comportamento de uma classe). Uma das regras de sintaxe mais simples e mais importantes no C# diz que todas as instrues devem ser terminadas com um ponto-e-vrgula. Exemplo de uma instruo: Console.WriteLine("Hello World"); A instruo acima chama o mtodo WriteLine da classe Console, passando como parmetro a string Hello World.

18

Identificadores
Identificadores so os nomes utilizados para identificar os elementos nos seus programas, como variveis, classes, mtodos, namespaces, entre outros. No C#, devem ser seguidas algumas regras para definir os identificadores: Utilizar apenas letras (maisculas ou minsculas), dgitos e o caractere de sublinhado. Um identificador deve iniciar com uma letra ou com o caractere de sublinhado. Um identificar no pode conter espaos em branco em seu interior.

Importante lembrar: A linguagem de programao C# case-sensitive, ou seja, ela diferencia letras minsculas de maisculas, onde um M interpretado diferente de um m.

Exemplos de identificadores vlidos: resultado _placar timeDeFutebol clube15

Exemplos de identificadores no vlidos: resultado$ 15clube _placar@

Palavras reservadas no C# (palavras-chave)


A linguagem de programao C# reserva determinadas palavras para seu prprio uso. As palavras reservadas so identificadores reservados e predefinidos que possuem um significado especial para o compilador C#. Estas palavras no podem ser utilizadas como identificadores em nossos programas contanto que seja includo o caractere arroba (@) como prefixo. Confira uma lista que identifica estas palavras reservadas (palavras-chave): abstract break char continue do as byte checked decimal double base case class default else bool catch const delegate enum

19 event finally foreach in internal namespace operator params readonly sealed static this typeof unsafe void explicit fixed goto in (generic modifier) is new out private ref short string throw uint ushort volatile extern float if int lock null out (generic modifier) protected return sizeof struct true ulong using while false for implicit interface long object override public sbyte stackalloc switch try unchecked virtual

No Visual Studio as palavras reservadas so identificadas com uma cor azul.

20

Variveis e tipos de dados


Variveis so espaos na memria do computador reservados para armazenar dados. A referncia aos dados de uma varivel pode ser feita de duas maneiras: 1. Por valor, chamado de Value-Type; 2. Por referncia, chamada de Reference-Type. A principal diferena entre os dois tipos que quando voc faz referncia a uma varivel ValueType ela contm diretamente um dado, enquanto uma varivel Reference-Type contm uma referncia ao dado. Vamos analisar um pouco melhor os dois tipos de variveis: Varivel Value-Type: Contm diretamente o dado; Cada cpia da varivel contm uma cpia do dado; Operaes em uma varivel no afetam a sua cpia; Exemplos de variveis Value-Type so: integers, doubles, floats.

Varivel Reference-Type: Armazenam uma referncia ao dado (conhecido como objetos). Duas variveis Reference-Type podem conter referncia a um mesmo objeto. Operaes em uma afetam a outra; Exemplos de References-Type so: strings, arrays, classes;

Os conceitos referentes s variveis Reference-Type apresentados acima fazem mais sentido quando trabalhamos com objetos em C#, j que todas as variveis que armazenam objetos so do tipo Reference-Type. Porm, nesta apostila no ser tratado o assunto orientao a objetos, ento at este momento no ser importante entender ainda o que significam objetos, classes, mtodos. Por enquanto, saiba apenas que a referncia aos dados de uma varivel pode ser feita de duas maneiras: Value-Type ou Reference-Type. E que os principais tipos de dados primitivos que utilizaremos em nossos estudos so do tipo Value-Type. Quando voc estudar programao orientada a objetos com C#, esses conhecimentos faro mais sentido.

Declarando variveis
Antes de usar uma varivel necessrio declar-la. Declaramos uma varivel especificando o tipo de dado seguido do identificador da varivel, como no exemplo: int contador; O exemplo declara uma varivel identificada como contador, do tipo integer. Ou seja, quando essa varivel for criada na memria, ela armazenar apenas nmeros inteiros.

21 Podemos tambm declarar mltiplas variveis do mesmo tipo, em uma nica linha de comando, da seguinte maneira: int contador, numeros; No exemplo anterior , estamos declarando duas variveis do tipo inteiro, uma identificada como contador e a outra como numeros. O C# no permite a criao de duas ou mais variveis locais com o mesmo identificador.

Nomeando variveis

Existem recomendaes para a escolha de identificadores de variveis: No utilize o caractere de sublinhado nos identificadores de variveis. No crie identificadores de variveis que se diferenciem apenas pela sua forma. Exemplo: minhaVariavel e MinhaVariavel; Procure iniciar o identificador da varivel com letra minscula; Quando o identificador da varivel tiver mais de uma palavra, a primeira palavra inicia com letra minscula, e as demais com letra maiscula (notao camelo ou camelCase). Exemplo: minhaVariavel, nomeCompletoPessoa;

Tipos de Dados
Quando declaramos uma varivel, alocamos espao para a mesma no computador. Sempre que declaramos uma varivel precisamos dizer que tipo de dado pode ser armazenado nela. A linguagem de programao C# possui vrios tipos de dados predefinidos denominados tipos de dados primitivos.

A tabela a seguir mostra os tipos de dados primitivos mais utilizados no C# e o intervalo de valores que podem ser armazenados neles: C# Type Descrio bool sbyte byte short ushort Booleano Nmeros inteiros Nmeros inteiros Nmeros inteiros Nmeros inteiros Valor Possveis de se armazenar Recebe os valores true (verdadeiro) ou false (falso) Valores entre -128 e 127 Valores entre 0 e 255 Valores entre -32768 e 32767 Valores entre 0 e 65535 8 bits com sinal 8 bits sem sinal 16 bits com sinal (216) 1 16 bits sem sinal Exemplos bool ligado; ligado = true; bool valor; valor = 125; byte valor; valor = 200; short valor; valor = -30; ushort valor; valor = 65000;

22

int uint long

Nmeros inteiros Nmeros inteiros Nmeros inteiros Nmeros inteiros

Valores entre 2147483648 e 2147483647 Valores entre 0 e 4294967295 Valores entre 9223372036854775808 e 9223372036854775807 Valores entre 0 e 18446744073709551615

32 bits com sinal 32 bits sem sinal 64 bits com sinal

int valor; valor = 228371; uint valor; valor = 229981; long valor; valor = -222001; ulong valor; valor = 8827332; float valor; valor = 4.873; double valor; valor = 23.982; decimal moeda; moeda = 1.99; object valor; valor = 6; object nome; nome = Elias;

ulong float

64 bits sem sinal 32 bits

Nmeros de Valores entre 1.5 1045 a 3.4 ponto 1038 com preciso de 7 digitos flutuante Nmeros de Valores entre 5.0 10324 to 1.7 ponto 10308 com preciso de 15-16 flutuante dgitos Para clculos financeiros e monetrios com 28-29 dgitos. Qualquer tipo

double

64 bits

decimal Valores monetrios object

128 bits

char string

Caractere nico Sequncia de caracteres


16

Um caractere de 16 bits. 16 bits por caractere

char sexo; sexo = M; string nome; nome = Elias;

O valor de 2 65.536.

Atribuindo valor s variveis no C#


Quando declaramos uma varivel no C#, precisamos atribuir um valor a ela. Uma varivel no poder ser utilizada sem antes atribuir um valor a ela. Se tentarmos utilizar uma varivel sem antes atribuir um valor a ela, ir ocorrer um erro durante a compilao. Exemplo de como atribuir um valor a uma varivel: int numeroVagas; numeroVagas = 10;

23 Primeiro declaramos a varivel identificada como numeroVagas, do tipo inteiro. Depois atribumos o valor 10 a ela. O sinal de igual (=) atribui o valor que est direita varivel que est esquerda do operador de atribuio. Assim, a varivel numeroVagas recebe o valor 10. Tambm podemos atribuir um valor a uma varivel na mesma linha da sua declarao, como no exemplo: int numeroVagas = 10; Outros exemplos: char sexo = 'M';

byte numerosPequenos = 123;

double numerosComVirgula = 32.767;

24

Operadores
Operadores de Atribuio
A linguagem de programao C# possui vrios operadores de atribuio. Considere que cada operador de atribuio atribui o valor da direita do operador no local de armazenamento (varivel) do lado esquerdo do operador.

Atribui o valor do operando do lado direito no operando do lado esquerdo (local de armazenamento). O valor do operando do lado direito deve ser do mesmo tipo do local de armazenamento do lado esquerdo (ou o valor do lado direito deve poder ser convertido implicitamente para o tipo do operando do lado esquerdo). Atribui ao operando do lado esquerdo (local de armazenamento) a soma ou concatenao (dependendo do tipo de dado) do operando do lado esquerdo com o operando do lado direito. A expresso x += y o equivalente x = x + y; Se os operandos forem numricos, realiza a adio dos mesmos. Se forem operandos do tipo string faz a concatenao dos mesmos. Atribui ao operando do lado esquerdo (local de armazenamento) a subtrao do operando do lado esquerdo com o operando do lado direito. A expresso x -= y o equivalente x = x - y; Atribui ao operando do lado esquerdo (local de armazenamento) a multiplicao do operando do lado esquerdo com o operando do lado direito. A expresso x *= y o equivalente x = x * y; Atribui ao operando do lado esquerdo (local de armazenamento) a diviso do operando do lado esquerdo com o operando do lado direito. A expresso x /= y o equivalente x = x / y;

int numero = 10;

string nome = Carlos;

+=

x += y

-=

x -= y

*=

x *= y

/=

x /= y

Operadores aritmticos
Utilizamos operadores aritmticos para a construo de expresses aritmticas. Uma expresso aritmtica retorna sempre um valor numrico: Exemplos de expresses aritmticas: 1+2 2+4*2 -> retorna o valor numrico 3 -> retorna o valor numrico 10

2 - (4 * 2) -> retorna o valor numrico -6

25 Para a construo das expresses aritmticas no C#, podemos utilizar os seguintes operadores aritmticos:

Para tipos numricos, utilizado para realizar a soma dos tipos numricos. Para tipos string utilizado para a concatenao de strings. Utilizado para a subtrao dos tipos numricos. Utilizado para a multiplicao dos tipos numricos. Utilizado para a diviso dos tipos numricos. A diviso de tipos integer retorna um integer. A diviso de tipos ponto flutuante retorna ponto flutuante. Retorna o resto da diviso entre dois nmeros.

int x = 1 + 5;

resposta: x = 6

string y = t + iago; resposta: y = tiago int x = 6 - 2; int x = 6 * 2; resposta: x = 4 resposta: x = 12 resposta: x = 2.5

* /

float x = 5.0 / 2;

int x = 5 / 2;

resposta: x = 1

Operadores relacionais
Utilizamos os operadores relacionais para a construo de uma expresso condicional (tambm chamada de expresso booleana). Diferente de uma expresso aritmtica, que retorna sempre um valor numrico, as expresses condicionais retornam sempre duas possibilidades de valor (true ou false). Exemplos de expresses condicionais: 1 == 2 -> retorna false, j que 1 no menor que 2 -> retorna true, j que 100 igual a 100.

100 >= 100

Para a construo das expresses condicionais no C#, podemos utilizar os seguintes operadores relacionais:

==

igual

Em tipos Value-Type, o operador de igualdade retorna true (verdadeiro) se os valores de seus operandos forem iguais, e false, se no forem iguais. Em tipos Reference-Type, que no uma string, o operador de igualdade retorna true se os dois operandos se referem ao mesmo objeto. Para tipos string, compara os valores das strings. Em tipos numricos, retorna true se o primeiro operando for maior que o segundo operando. Em caso contrrio, retorna false. Em tipos numricos, retorna true se o primeiro operando for menor que o segundo operando. Em caso contrrio, retorna false. Em tipos numricos, retorna true se o primeiro operando for maior ou igual que o segundo operando. Em caso contrrio, retorna false. Em tipos numricos, retorna true se o primeiro operando for menor ou igual que o segundo operando. Em caso contrrio, retorna false.

1 == 2 retorna false

2 == 2 retorna true

oi == oi retorna true 1 > 2 retorna false 11 > 1 retorna true 1 < 2 retorna true 11 < 1 retorna false 1 >= 2 retorna false 11 >= 1 retorna true 11 >= 11 retorna true

>

maior que

<

menor que

>=

maior ou igual que

<=

menor ou igual que

1 <= 2 retorna true 11 <= 1 retorna false 11 <= 11 retorna true

26

!=

diferente que

Em tipos Value-Type, o operador retorna true (verdadeiro) se os valores de seus operandos so diferentes, e false, se forem iguais. Em tipos Reference-Type, que no uma string, o operador retorna true se os dois operandos no se referem ao mesmo objeto. Para tipos string, compara os valores das strings.

Operadores lgicos
Para que possamos juntar mais de uma expresso condicional, utilizamos os operadores lgicos. Expresses com operadores lgicos sempre retornaro o valor true ou false. Exemplo de utilizao dos operadores lgicos em expresses condicionais: 1 > 2 AND 1 < 2 1 > 2 OR 1 < 2 -> retorna false -> retorna true -> retorna true

1 <= 2 AND 3 > 2

Para a construo das expresses condicionais com operadores lgicos no C#, podemos utilizar os seguintes operadores lgicos:

! &&

Operador de negao Operador condicional AND Operador condicionar OR

Operador que nega seu operando. Retorna true se, e somente se, seu operando for false. Realiza a lgica AND para seus operandos do tipo booleano. Retorna true se os operandos conterem true. Realiza a lgica OR para seus operandos do tipo booleano. Retorna true se um dos operandos conter true.

!true resposta: false

true && true resposta true false && true resposta false false && false resposta false

||

true || true resposta true false || true resposta true false || false resposta false

Operadores de incremento / decremento


A linguagem de programao C# possui alguns operadores de incremento / decremento de variveis:

++

Operador de incremento

O operador de incremento incrementa seu operando em 1. O operador pode aparecer antes ou depois de seu operando. Quando o operador aparece antes de seu operando uma operao de pr-incremento, onde o resultado da operao o valor do operando aps ele ser incrementado. Quando o operador aparece depois de seu operando uma operao de ps-incremento, onde o resultado da operao o valor do operando antes de ser incrementado. O operador de decremento decrementa seu operando em 1. O operador pode aparecer antes ou depois de

int x = 1; int y = ++x resultado: y = 2 e x = 2

int x = 1; int y = x++ resultado: y = 1 e x = 2; int x = 1;

--

Operador de

27 decremento seu operando. Quando o operador aparece antes de seu operando uma operao de pr-decremento, onde o resultado da operao o valor do operando aps ele ser decrementado. Quando o operador aparece depois de seu operando uma operao de ps-decremento, onde o resultado da operao o valor do operando antes de ser decrementado. int y = --x resultado: y = 0 e x = 0

int x = 1; int y = x-resultado: y = 1 e x = 0;

Precedncia de operadores
Algumas operaes mais complexas podem exigir mais de um operador lgico e relacional. A sequncia de execuo neste tipo de expresso a seguinte: 1 Operadores relacionais 2 Operadores lgicos Vejamos alguns exemplos: Veculo = Bicicleta && Preo < 300 Primeiro so resolvidos os operadores relacionais, depois os operadores lgicos. No exemplo, o resultado ser verdadeiro se Veiculo = Bicicleta for verdadeiro E se o preo for menor que 300. Primeiro so resolvidos os operadores relacionais, depois os operadores lgicos. No exemplo, o resultado ser verdadeiro se Veiculo = Carro for verdadeiro OU se o preo for menor que 300. Ser Verdadeiro se o preo no for menor que 100.

Veiculo = Carro || Preo < 500

!Preo < 100 Em expresses aritmticas, a precedncia a seguinte: 1 2 3 4 / * + diviso multiplicao soma subtrao

Por exemplo, a expresso x + y * z resolvida como x + (y * z) porque o operador * possui uma precedncia mais alta que o operador +.

28

Constantes
Constantes so valores imutveis que no podem ser modificadas durante o tempo de vida da aplicao. Constantes so declaradas com o modificador const. Os seguintes tipos de dados podem ser utilizados para constantes: bool, byte, sbyte, char, decimal, Double, float, int, uint, long, ulong, object, short, ushort, string. Constantes devem ser inicializadas quando so declaradas. Por exemplo: const int meses = 12; No exemplo, a constante identificada como meses possui sempre o valor 12 e no pode ser modificada. til utilizar constantes quando queremos utilizar nomes descritivos, ao invs de valores numricos literais. Por exemplo: const double Pi = 3.14159; const int velocidadeDaLuz = 300000; Nos exemplos acima, criamos duas constantes, uma que armazena o valor de Pi, e outra que armazena a velocidade da luz em quilmetros por segundo. Sempre que precisarmos utilizar esses valores em alguma instruo, no ser necessrio lembrar-se dos valores, j que faremos referncia constante.

29

Inserindo comentrios no cdigo C#


Como em qualquer linguagem de programao, podemos inserir alguns comentrios no cdigo C# que facilitam a compreenso do cdigo por quem escreve e para terceiros. Podemos criar comentrios no C# de duas formas: o comentrio de linha e o comentrio de mltiplas linhas. Veja um exemplo de comentrio de linha: string nome = "Tiago"; Console.WriteLine(nome); // Exibe o resultado Agora um exemplo de comentrio com mltiplas linhas que utiliza o delimitador /* para a abertura do comentrio e */ para o fechamento do comentrio: /* O trecho de cdigo abaixo armazena a string "Tiago" na varivel do tipo string identificada como nome. Na prxima instruo, o valor da varivel apresentada ao usurio na tela. */ string nome = "Tiago"; Console.WriteLine(nome); // Exibe o resultado

30

Estruturas de Deciso / Instrues de Seleo


Estruturas de deciso so muito utilizadas na programao de computadores. Criamos estruturas de deciso atravs de instrues de seleo. O objetivo de uma estrutura de deciso direcionar o fluxo do programa de acordo com uma condio, utilizando uma expresso condicional. Primeiramente vamos reforar o que uma expresso condicional. Uma expresso condicional, diferente de uma expresso aritmtica que retorna um valor numrico, retorna sempre um valor booleano, ou seja, verdadeiro (true) ou falso (false). Uma expresso condicional formada por dois operandos separados por um operador relacional. Exemplo: PREO < 100 PREO e 100 so os operandos, enquanto que o sinal de menor (<) um operador relacional. Se preo for menor que 100, ento o resultado da expresso condicional verdadeiro (true). Caso contrrio o resultado falso (false). No item Operadores relacionais, desta apostila, so apresentados os operadores relacionais utilizados na linguagem de programao C#. Agora que reforamos a idia do que uma expresso condicional, vamos estudar o que uma ESTRUTURA DE DECISO. Uma estrutura de deciso um cdigo que utiliza as expresses condicionais para direcionar o fluxo do programa. Utilizamos instrues de seleo para criar uma estrutura de deciso. As principais estruturas de seleo utilizadas, no somente na linguagem C#, so o if e o switch.

Instruo de seleo if
Uma sintaxe possvel do if a seguinte:

if (EXPRESSO CONDICIONAL) { BLOCO DE CDIGO 1 } else { BLOCO DE CDIGO 2 }


Se o resultado da expresso condicional for verdadeiro (true) ento o bloco de cdigo 1 ser executado. Se a expresso for falsa (false), ento o bloco de cdigo 2 ser executado. Caso os blocos de cdigo 1 e 2 tiverem apenas uma linha de cdigo no ser necessrio usar os colchetes, j que o uso de colchetes obrigatrio quando um bloco de cdigo possuir mais que uma instruo. A boa prtica de programao indica que sempre se utilize os colchetes, mesmo quando um bloco de cdigo conter apenas uma instruo.

31 Mais alguns exemplos: double salario = 1200; if (salario > 500) { salario += 50; } else { salario += 100;
}

No exemplo acima, armazenamos o valor do salrio na varivel identificada como salario, do tipo double, com o valor 1200. A instruo de seleo if verifica, atravs de uma expresso condicional, se o valor da varivel salrio maior que 500. Se a expresso condicional retornar verdadeiro (true), ento a instruo que atribui varivel salario o resultado da soma da varivel salrio com o valor 50 executada. Se a expresso for falsa (false), entra em ao o bloco de cdigo de else com uma instruo que atribui varivel salario a soma do valor da varivel salario com 100; double salario = 1200; if (salario < 500) salario += 100; else if ((salario >= 500) && (salario < 2000)) salario += 75; else salario += 50; No exemplo acima, caso o valor de salario for menor que 500, a varivel salario recebe o valor dela somado com o valor 100. Seno, verifica se o salrio for maior ou igual a 500 e menor que 2000, e em quando positivo (verdadeiro), a varivel salario recebe o valor da soma dela mesmo com o valor 75. Se o segundo if tiver uma expresso condicional negativa (false), ento o salrio somado com 50. Perceba que na expresso condicional do segundo if, foi utilizado o operador lgico && (AND) que utilizado quando queremos testar mais de uma expresso condicional. Os outros operadores lgicos existentes so o || (OR) e o ! (NOT) e so apresentados nesta apostila no item Operadores lgicos. Instrues if em cascata Como no exemplo anterior, possvel aninhar as instrues if dentro de outras instrues if. Assim, possvel encadear uma sequncia de expresses condicionais, que so testadas uma aps a outra at que uma delas seja avaliada como verdadeira (true). Exemplo do if em cascata: int dia = 5; string diaSemana; if (dia == 0) diaSemana = "Domingo"; else if (dia == 1) diaSemana = "Segunda-Feira"; else if (dia == 2) diaSemana = "Tera-Feira"; else if (dia == 3) diaSemana = "Quarta-Feira";

32 else if (dia diaSemana else if (dia diaSemana else if (dia diaSemana else diaSemana == 4) = "Quinta-Feira"; == 5) = "Sexta-Feira"; == 6) = "Sbado"; = "Desconhecido";

No exemplo temos o uso da instruo de seleo if em cascata. A segunda instruo if s ser alcanada se a primeira for false. Da mesma forma, o terceiro if s ser alcanado se o primeiro e o segundo if forem false.

Instruo de seleo switch


A segunda estrutura de deciso que iremos estudar a instruo de seleo switch. O switch, assim como o if, direciona o fluxo do programa baseado no valor de uma expresso condicional. Algumas vezes, ao escrever uma instruo if em cascata, todos os ifs so semelhantes, porque todas avaliam uma expresso condicional parecida, como o caso do ltimo exemplo apresentado de if em cascata. A nica diferena que cada instruo if compara o resultado da expresso com um valor diferente. Podemos escrever o mesmo exemplo apresentado anteriormente do if em cascata utilizando a instruo de seleo switch. A sintaxe de uma instruo switch a seguinte: switch ( expresso de controle ) { case expressoConstante: instrues break; case expressoConstante: instrues break; ... default instrues break; }

33 Por exemplo, vamos reescrever o ltimo exemplo apresentado de if em cascata, porm utilizando a instruo de seleo switch:
int dia = 5; string diaSemana; switch (dia) { case 0: diaSemana break; case 1: diaSemana break; case 2: diaSemana break; case 3: diaSemana break; case 4: diaSemana break; case 5: diaSemana break; case 6: diaSemana break; default: diaSemana break; }

= "Domingo";

= "Segunda-Feira";

= "Tera-Feira";

= "Quarta-Feira";

= "Quinta-Feira";

= "Sexta-Feira";

= "Sbado";

= "Desconhecido";

A instruo switch muito til, mas todas as instrues switch devem obedecer s seguintes regras: A instruo switch s pode ser utilizada em tipos de dados primitivos, como int ou string. Com qualquer outro tipo (incluindo float e double), voc ter de utilizar uma instruo if. Os rtulos de caso devem ser expresses constantes, como 42 ou 42. Seno, deve ser utilizada uma instruo if. Os rtulos de caso devem ser expresses nicas. Ou seja, dois rtulos de caso no podem ter o mesmo valor.

34

Estruturas de repetio / instrues de repetio


Em determinado momento, h a necessidade de executarmos um determinado conjunto de comandos vrias vezes. Para que no precisemos rescrev-los tantas vezes quanto o nmero de vezes que precisamos que eles sejam executados, utilizamos estruturas de repetio. Alguns autores descrevem como estruturas de lao ou estruturas de iterao. Em linguagens de programao, para que possamos criar estruturas de repetio, utilizamos algumas instrues de repetio, onde encontramos as instrues while, for e do. Cada uma das estruturas / instrues utiliza uma sintaxe particular, mas com a mesma funo: executar um determinado nmero de vezes um conjunto de instrues. A determinao de quantas vezes o conjunto de comandos (instrues) ser executado definido pelo programador, que deve explicitar no comando utilizado quantas vezes devero ser executados os comandos.

Instruo de repetio while


A instruo de iterao while utilizada para executar uma instruo repetidamente enquanto alguma expresso condicional se mantiver verdadeira (true). A sintaxe de uma instruo while a seguinte: while (expresso condicional) instruo A expresso condicional avaliada e, se for verdadeira, a instruo executada e a expresso booleana avaliada novamente. Enquanto a expresso condicional se mantiver verdadeira, a instruo repetida e a expresso condicional avaliada novamente. Este processo ocorre at que a expresso condicional seja avaliada como falsa (false), e quando isso ocorre a instruo de iterao while termina e a execuo continua com a primeira instruo aps a instruo while. A expresso condicional deve retornar um valor booleano (true ou false); A expresso condicional deve ser escrita entre parnteses; Se a expresso condicional for avaliada como falsa na primeira avaliao, a instruo interior no ser executada; Se for necessrio executar duas ou mais instrues sob o controle de uma instruo while, deve ser utilizado chaves para agrupar as instrues em um bloco.

Exemplo de uso da instruo while: int cont = 0; while (cont < 10) { Console.WriteLine(cont); cont++; } Todas as instrues while devem terminar em algum ponto. Um erro comum esquecer de incluir uma instruo para fazer com que a expresso condicional seja, em determinado momento, avaliada como false e terminar a iterao, o que resulta em um programa que executado de modo contnuo. No exemplo acima, a instruo cont++ desempenha esse papel, permitindo que em determinado momento a expresso condicional seja avaliada como false, finalizando a iterao da instruo while. De acordo com o exemplo anterior, diz-se que a varivel cont uma varivel de controle da instruo de repetio while, enquando que a instruo cont++ uma instruo de atualizao da varivel de controle.

35

Instruo de repetio for


Refletindo sobre a instruo de repetio while, perceba que foi necessrio inicializar uma varivel de controle, realizar uma atualizao da varivel de controle e indicar uma expresso condicional: inicializao da varivel de controle while (expresso condicional) { instrues ..... atualizao da varivel de controle } Com uma instruo for, possvel escrever uma verso mais formal desse tipo de construo, combinando a inicializao da varivel de controle, a expresso condicional e a atualizao da varivel de controle. A instruo for til porque ao escrev-la somos obrigados a lembrar dessas trs partes. A sintaxe da instruo for a seguinte: for (inicializao da varivel de controle; expresso condicional; atualizao da varivel de controle) instruo O mesmo exemplo utilizado para a instruo while pode ser escrito da seguinte forma com a instruo for: for (int cont = 0; cont < 10; cont++) Console.WriteLine(cont); Perceba que o exemplo da instruo for acima realiza a mesma operao que o exemplo utilizado para a instruo while: int cont = 0; while (cont < 10) { Console.WriteLine(cont); cont++; } Na instruo for, a inicializao ocorre uma vez no incio da iterao (loop). Portanto, se a expresso condicional for avaliada com true, a instruo interior do for ser executada. A atualizao da varivel de controle ocorre e ento a expresso condicional reavaliada. Enquanto a expresso condicional for verdadeira, a instruo do bloco de for executada. Observe que a inicializao da varivel de controle ocorre apenas uma vez, no incio, e que a instruo no bloco da instruo for executada antes que a atualizao da varivel de controle ocorra, e que a atualizao da varivel de controle ocorre antes da expresso condicional ser avaliada. considerada uma boa prtica de programao utilizar chaves para delinear explicitamente o bloco de instruo para o corpo das instrues if, while e for, mesmo quando o bloco contm uma nica instruo.

36

Instruo de repetio do
As instrues while e for testam suas expresses condicionais no incio da iterao (loop). Isso significa que se a expresso condicional avaliada como false no primeiro teste, o corpo do loop no executado nem mesmo uma vez. A instruo de repetio do diferente. Sua expresso condicional avaliada aps cada iterao e, portanto, o corpo executado pelo menos uma vez. A sintaxe da instruo do a seguinte: do instruo while (expresso condicional); Como exemplo para a instruo do, faremos o mesmo que nas instrues while e for, em um exemplo que escreve os valores inteiro de 0 a 9 no console (prompt de comando): int cont = 0; do { Console.WriteLine(cont); cont++; } while (cont < 10);

Instrues break e continue


A instruo break utilizada dentro das instrues de repetio para sair do corpo de uma instruo de iterao (repetio). J a instruo continue faz com que a o programa execute imediatamente a prxima iterao do loop. Exemplo de utilizao da instruo break: for (int i=0; i<=1000; i++){ if (i == 333) { break; } } No exemplo acima, temos uma instruo de iterao for que inicializa uma varivel de controle com o valor zero (0), possui uma expresso condicional que retornar true enquanto que o valor da varivel de controle i for menor ou igual a 1000, e uma atualizao da varivel de controle i que incrementa o valor 1 a cada iterao. Porm, quando o valor de i for igual a 333, ser executado o corpo da instruo if que possui uma instruo break. Ou seja, quando i conter o valor 333, o programa sair do corpo da instruo de repetio for, terminando a iterao. No exemplo acima, o valor da varivel de controle i nunca passar de 333;

37 Exemplo de utilizao da instruo continue: int c = 0; string resposta; while (c < 10) { Console.WriteLine("Deseja incrementar a varivel c? (Digite S para Sim)"); resposta = Console.ReadLine(); if (resposta != "S") { continue; } else { c++; } Console.WriteLine("O valor atual da variavel c " + c); } No exemplo acima a instruo de repetio while far a iterao enquanto que o valor da varivel de controle c for menor que 10. No corpo da instruo while, feito uma pergunta se o usurio deseja incrementar a varivel. Se o usurio digitar a string S significa que a varivel c ser incrementada. Se a resposta do usurio for diferente da string S ser executada a instruo continue, que interromper a iterao atual, pulando imediatamente para a prxima iterao, sem fazer a atualizao da varivel de controle. Teste voc mesmo o cdigo do exemplo.

38

Arrays
As variveis, por definio, armazenam somente um valor de cada vez. Quando colocamos um valor numa varivel que j possua um contedo, o contedo anterior substitudo pelo novo valor. Se fosse necessrio manipular um conjunto de dados do mesmo tipo, seria necessrio declarar diversas variveis. Mas existe um tipo de varivel que pode assumir vrios valores de uma vez. Chamamos esse tipo de array. Veremos ainda que um array pode possuir uma nica dimenso ou vrias dimenses. Um array de nica dimenso tambm chamado por vrios autores de vetor, e um array de vrias dimenses, geralmente duas, chamado pelos mesmos autores de matriz. Um array uma das mais simples estruturas de dados na programao de computadores. uma sequncia de elementos de dados. Na linguagem de programao C#, todos os elementos de um array possui o mesmo tipo. Os elementos de array residem em um bloco contguo de memria e so acessados por meio de um ndice.

Declarando variveis de arrays


Em C#, uma varivel de array declarada especificando o tipo dos elementos que o array guardar, seguido por um par de colchetes, seguido pelo identificador da varivel. Os colchetes significam que a varivel um array. Por exemplo, para declarar um array de variveis do tipo int identificada como numeros, necessrio escrever: int[] numeros;

Criando uma instncia de um array


Os arrays so variveis do tipo Reference-Type, independente dos tipos de seus elementos internos. Isso significa que uma varivel de array referncia um bloco contguo de memria armazenando elementos de array no heap da aplicao e no armazena seus elementos de array diretamente na varivel. O tamanho de um array deve ser especificado quando criamos uma instncia de array. Exemplo de como instanciar um array: int[] numeros; numeros = new int[4]; Para criar uma instncia de array, voc utiliza a palavra-chave new seguido pelo nome do tipo de elemento, seguido pelo tamanho do array que voc est criando entre colchetes. Na primeira linha do ltimo exemplo criamos a varivel de array. Na segunda linha instanciamos um array de 4 posies na varivel nmeros. Poderamos fazer o mesmo procedimento em uma nica linha: int[] numeros = new int[4]; Caso voc tenha achado estranho o termo instncia, no identificando muito bem do que se trata, e as palavras new e heap descritas anteriormente, no se assuste. Estes termos so muito abordados quando se estuda o paradigma de programao orientado a objetos, que no o alvo de estudo desta apostila, como j foi citado algumas vezes. No momento, apenas aceite que para a criao de arrays necessrio atribuir a uma

39 varivel do tipo array uma instncia de array, colocando-se o operador new, seguido do tipo dos elementos internos do array, seguido pelo tamanho do array, descrito entre colchetes.

Inicializando variveis de array


Quando voc cria um array, todos os elementos desse array so inicializados com um valor padro dependendo do seu tipo (elementos do tipo int inicializam com o valor 0). Se voc quiser, voc poder modificar esse comportamento e inicializar os elementos de um array com valores especficos. possvel isso fornecendo uma lista de valores separados por vrgulas e entre chaves. Por exemplo, para criar um array com 4 nmeros inicializando os valores do array com 9, 3, 10 e 20, o exemplo seria escrito assim: int[] numeros = new int[4]{9, 3, 10, 20};

Acessando um elemento de um array


Para acessar um elemento de um array, voc deve formecer um ndice indicando que elemento voc quer. Cada elemento de um array possui um ndice, que comea sempre em zero (0). Ou seja, se um array conter 4 elementos, o ndice do primeiro elemento ser zero (0), o do segundo elemento ser um (1), do terceiro ser dois (2) e do quarto elemento ser trs (3). Veja o exemplo: int[] numeros = new int[4]{9, 3, 10, 20}; Console.WriteLine(numeros[1]); No exemplo abaixo temos a criao de um array na varivel numeros. Este array armazena 4 elementos do tipo int. Estes elementos j foram inicializados com os valores 9, 3, 10 e 20, respectivamente, nas posies zero (0), um (1), dois(2) e trs (3) do array. Na segunda instruo do exemplo, escrito no Console o valor do elemento de ndice (posio) um (1) do array numeros. A referncia ao ndice um (1) do array foi realizada colocando-se o ndice 1 entre colchetes. No exemplo, ser escrito no Console o nmero 3. Outro exemplo: int[] numeros = new int[4]{9, 3, 10, 20}; int numero = numeros[0]; No segundo exemplo foi criada uma varivel do tipo int identificada como numero que recebe o valor do elemento de ndice zero (0) do array numeros. Ao final desse cdigo a varivel numero receber o valor 9.

Percorrendo os elementos de arrays


Uma forma simples de percorrer os elementos de arrays atravs de uma instruo de repetio especfica para arrays, o foreach. Exemplo: int[] numeros = new int[4]{9, 3, 10, 20}; foreach (int numero in numeros) { Console.WriteLine(numero); }

40 A instruo de repetio foreach declara uma varivel de iterao (neste exemplo, int numero) que recebe automaticamente o valor de cada elemento do array (neste exemplo, o array numeros). O tipo da varivel de iterao deve ser do mesmo tipo dos elementos do array que se deseja percorrer. A instruo foreach a maneira preferida pelo programadores de iterar (percorrer) um array. Tambm possvel percorrer um array utilizando a instruo de repetio for: int[] numeros = new int[4]{9, 3, 10, 20}; for(int cont = 0; cont < numeros.Length; cont++) { Console.WriteLine(numeros[cont]); } No exemplo acima, percorremos o array numerous utilizando a instruo de repetio for. muito simples. Inicializamos a varivel de controle (cont) do for em 0, j que 0 o ndice (posio) inicial de um array. A instruo for vai iterar enquanto que o valor da varivel de controle for menor que o nmero de elementos do array numeros. A cada iterao, a varivel de controle incrementada em 1. Como um array um objeto (mais uma vez temos uma referncia programao orientada a objetos), utilizamos o mtodo Length que retorna o nmero de elementos do array. A cada iterao do for escrito no Console o valor de uma posio do array, posio essa que definida pela varivel de controle do for.

41

Bibliografia
SHARP, John. Microsoft Visual C# - Passo a Passo. Editora Bookman. Porto Alegre. 2008. 624 pg. VIGAS, Fabian; ASSIS, Gilda Aparecida de. Algoritmos. Edit. Feevale. Novo Hamburgo. 2003. 100 pg. STELLMAN, Andrew; GREENE, Jennifer. Use a Cabea C#. Editora Alta Books. Rio de Janeiro. 2008. 618 pg. MSDN Visual C# Developer Center. Endereo: http://msdn.microsoft.com/pt-br/vcsharp/default MSDN Guia de Programao C#
Endereo: http://msdn.microsoft.com/pt-br/library/67ef8sbd.aspx MSDN Visual C# Endereo: http://msdn.microsoft.com/pt-br/library/kx37x362.aspx