Você está na página 1de 64

Lgica de Programao com C# (Console) Parte 1 Ambiente Microsoft Visual C# 2010 Express Prof.

Joo Luis Chagas Sanches e Marcos Siqueira

Linguagem de Programao C#
C Sharp, uma linguagem de programao, da Plataforma .NET, derivada de C/C++, simples, moderna e orientada objetos. Possui o poder do C/C++ aliado com a alta produtividade do Visual Basic. distribudo juntamente com Microsoft Visual Studio.NET, e tem acesso a toda a plataforma do Next Generation Windows Services (NGWS), que incluem uma poderosa biblioteca de classes e um mecanismo de execuo comum. a linguagem nativa para .NET Common Language Runtime (CLR), mecanismo de execuo da plataforma .NET. Isso possibilita a convivncia com vrias outras linguagens especificadas pela Common Language Subset (CLS).

Linguagem de Programao C#
Para o desenvolvimento deste material, estaremos utilizando a verso Microsoft Visual C# 2010 Express, que gratuita para estudo e atender aos nossos propsitos. A Linguagem C# sensitive case, ou seja, faz a diferena de letras minsculas com maisculas. Por exemplo: prova diferente de Prova, que diferente de PrOVa, e assim por diante. Link para download do programa Microsoft Visual C# 2010 Express: http://www.microsoft.com/visualstudio/ptb/downloads#d-2010-express Aps o download, instale o programa para dar continuidade na aula.

Tela Inicial do Microsoft Visual C# 2010 Express


Logo aps a instalao do programa, ao inicia-lo, ser exibida a seguinte tela:

Criando um projeto
Para iniciarmos o desenvolvimento temos que criar um novo projeto. Para isso, clique em File New Project.

Criando um projeto
Logo aps selecionar a opo de novo projeto, ser exibida uma janela para escolher o tipo de projeto que deseja desenvolver. Para nossos estudos neste curso, estaremos utilizando o tipo de projeto para aplicao console. Para isso basta selecionar Console Application, colocar um nome para o projeto Aula1_Exemplo1 (no lugar de ConsoleApplication1 na parte inferior da janela) e clicar em OK. Estaremos adotando este padro aos nomes dos projetos, para facilitar a identificao dos mesmos durante o curso.

Ambiente para Desenvolvimento


O ambiente ento estar preparado para o desenvolvimento do projeto, onde teremos na regio central da tela a rea de desenvolvimento (1), ao lado direito na tela o Solution Explorer (2) e Properties (3), e na regio inferior Error List e Output (4) .

Ambiente para Desenvolvimento


Em Solution Explorer mostrada a estrutura de pastas e arquivos do projeto, sendo que o arquivo Program.cs ser o arquivo que estaremos editando para o desenvolvimento do nosso primeiro exemplo. Em Properties possvel visualizar e alterar as configuraes do projeto, como por exemplo, o nome do projeto, framework, tipo de sada e algumas outras propriedades. Em Error List ser o local onde aparecero os erros de compilao que vierem a ocorrer durante o desenvolvimento dos projetos. O processo de compilao tem a funo de verificar se o cdigo fonte desenvolvido, possui algum erro. Caso tenha algum erro, o mesmo ser listado neste espao e consequentemente facilitando assim o entendimento do erro para que possamos soluciona-lo.

Ambiente para Desenvolvimento


Em Output ser um dos locais possveis para sada de dados n a execuo do programa, ou seja, todos os comandos que utilizarmos para exibir informaes para os usurios podem ser exibidos neste local. O padro que estaremos utilizando como sada de dados uma janela de Console. Para alterar a sada de dados, temos que configurar as propriedades do projeto. Na regio de desenvolvimento do cdigo fonte, quando criamos um projeto com um tipo especfico, o software j trs algumas linhas de cdigo j preenchidas. Este cdigo a estrutura padro bsica para o desenvolvimento de um projeto deste tipo.

Estrutura bsica padro


using serve para carregar as bibliotecas do sistema, ou seja, muitas funes e comandos j esto prontas para serem utilizadas, portanto temos que carreg-las no projeto para que possamos usufruir. namespace o nome dado ao ambiente de desenvolvimento do projeto. Em um projeto podemos criar vrios arquivos e com isso para cada arquivo criado, utilizaremos o mesmo namespace, facilitando assim a organizao do projeto. class diretiva utilizada em linguagem orientada a objetos para identificar o tipo de objeto a ser modelado e o arquivo dever ter sempre o mesmo nome da classe.

Estrutura bsica padro


static void main (string[] args) o cabealho do mtodo principal do projeto, ou seja, no momento da execuo do projeto, ser executada a sequencia lgica de comandos que estiverem escritas a partir do incio do desenvolvimento deste mtodo. O nome deste mtodo main. As chaves {} servem para delimitar um bloco de instrues, o incio e trmino de mtodos, classes, namespaces ou comandos. Iremos observar tambm que o ponto-e-vrgula ; fundamental para indicar o final de muitas instrues (comandos). Poderamos escrever um programa com vrias instrues em apenas uma linha, visto que o ponto-e-vrgula faria as delimitaes entre as instrues. Mas para um bom entendimento e organizao do cdigo fonte, geralmente usada uma instruo por linha.

Primeiro exemplo Hello World


Para nosso primeiro exemplo, estaremos desenvolvendo um programa que exiba na tela uma mensagem clssica para todos que iniciam um curso de programao, o famoso Hello World!. E para isso estaremos acrescentando duas linhas de cdigo dentro do mtodo principal (main). Dentro significa estar entre as chaves do mtodo main. Console.Write("Hello World!"); Console.ReadKey(); Depois de incluir estas duas linhas, temos que verificar se o cdigo digitado est correto, e estando correto, executar o programa. Para isso temos que clicar em Debug Start Debugging ou pressionar a tecla F5 ou ainda clicar no smbolo indicado abaixo, na barra de ferramentas.

Primeiro exemplo Hello World Tela


Logo aps digitar as instrues indicadas anteriormente, o cdigo fonte fica assim:

Primeiro exemplo Hello World Resultado


Logo aparecer uma janela de console, com a mensagem Hello World!.

Observe que no ttulo desta janela possui um endereo um arquivo executvel gerado aps a execuo, ou seja, foi criado o arquivo executvel do projeto. V at a pasta indicada e d um clique no arquivo Aula1_Exemplo1.exe. Nota: O arquivo executvel o produto (software) que ser disponibilizado para os usurios que utilizaro o programa, e o cdigo fonte no poder ser disponibilizado.

Primeiro exemplo Hello World Comandos


Duas instrues foram utilizadas para que obtivssemos este resultado, que foram: Console.Write(Hello World!) ; Responsvel por exibir uma mensagem da tela. Console.ReadKey() ; Responsvel por pausar a execuo do programa. Muitas outras instrues sero vistas durante o curso, mas no todas, pois como ser percebido, existem muitas bibliotecas com muitos recursos prontos para serem utilizados.

Salvando o projeto pela primeira vez


Para salvar o projeto para clicar em File Save All Na sequencia ir aparecer uma janela, com alguns campos para serem preenchidos (Nome do Projeto, Local onde deseja salvar e Nome para a Soluo). Feito isso basta clicar em Save.

Erros em tempo de Compilao


Caso a sintaxe (regra) de alguma instruo for escrita errada, na prpria linha de comando ir aparecer um sublinhado em vermelho, alertando que algo no est escrito corretamente, a basta analisar. Caso no perceba que tm algo de errado, e tentar executar o programa, o compilador acusar um erro. E s conseguir execut-lo depois que fizer as correes necessrias. Por exemplo, se esquecer o ponto-e-vrgula do final da instruo, ou escrever o comando em letras minsculas, ou esquecer de colocar aspas para exibir o texto, entre outras mais que acontecero durante o curso. Console.Write (Hello world!) console.write (Hello world!); console.write (Hello world!);

Erros de compilao
Ao compilar/executar este exemplo (F5), aparecer uma janela perguntando se quer continuar e executar a verso anterior antes da modificao (opo Sim), ou se no quer executar e verificar o que est de errado no cdigo atual (opo No). Vamos ento clicar sempre em No, para que possamos analisar os erros e corrigi-los. Neste exemplo, quando compilar o programa, os erros encontrados sero listados. Ento, basta realizar as correes sugeridas e compilar/executar novamente.

Erros em tempo de Execuo


Este tipo de erro gerado quando por exemplo, o usurio est utilizando o programa (executvel) e ele digita um letra em um campo onde era para ser digitado um nmero. Neste caso, a execuo do programa ser encerrada e aparecer uma informao com o possvel erro ocorrido. Sendo assim, como o usurio no tem acesso ao cdigo fonte, ter que solicitar ao programador que analise este erro e solucione o problema. Na Linguagem C#, existem mecanismos para tratamento de erros em tempo de execuo. Este assunto iremos tratar posteriormente.

Tipos de Dados
Antes de continuarmos com o desenvolvimento de projetos, precisamos saber e entender algumas particularidades da estrutura da linguagem C#, como os tipos de dados, comando de atribuio, operadores aritmticos, operadores relacionais e operadores lgicos. Toda linguagem de programao possui seus tipos de dados primitivos, ou seja, so os dados suportados diretamente pelo compilador. Esses dados possuem palavras chaves para facilitar sua utilizao durante a implementao de um sistema. Por exemplo, a palavra chave string mapeia diretamente o tipo System.String. Inclusive saber/conhecer estes tipos, pode auxiliar no desempenho do sistema a ser desenvolvido.

Tipos Primitivos em Linguagem C#


Tipo bool byte char
decimal

double float int long


object sbyte short string uint ulong ushort

Descrio Booleano Inteiro de 8 bits com sinal Caracter Unicode de 16 bits Inteiro de 96 bits com sinal com 28-29 dgitos significativos Flutuante IEEE 64 bits com 15-16 dgitos significativos Flutuante IEEE 32 bits com 7 dgitos significativos Inteiro de 32 bits com sinal Inteiro de 64 bits com sinal
Classe base Inteiro de 8 bits sem sinal Inteiro de 16 bits com sinal String de caracteres Unicode Inteiro de 32 bits sem sinal Inteiro de 64 bits sem sinal Inteiro de 16 bits sem sinal

Faixa de dados True ou false -127 a 128 U+0000 a U+ffff


1,0 x 10-28 a 7,9 x 1028

5,0 x 10-324 a 1,7 x 10308 1,5 x 10-45 a 3,4 x 1038 -2.147.483.648 a 2.147.438.647 -9.223.372.036.854.775.808 a 9.223.372.036.854.775.807
0 a 255 -32.768 a 32.767

0 a 4.294.967.295 0 a 18.446.744.073.709.551.615 0 a 65.535

Declarao de variveis
Para armazenar informaes em um programa, necessrio reservar espao na memria. E para isso temos que declarar variveis, para que estas possam receber informaes e assim, estas poderem ser utilizadas durante a execuo do programa. Como o prprio nome j diz, uma varivel pode ter seu contedo alterado durante a execuo de um programa, ou seja, ela pode iniciar valendo 5 e terminar valendo 322. Exemplos de declarao de variveis: int A, B, C; //Declarao de trs variveis do tipo int (inteiro) double valor, //Declarao de uma varivel do tipo double (real) string nome; //Declarao de uma varivel do tipo string (sequencia de caracteres)

Definio de nomes para variveis


Visando facilitar o entendimento do cdigo fonte desenvolvido, importante dar nome para as variveis, de acordo com o papel que ela ir exercer no programa. Por exemplo, no caso do programa precisar armazenar vrios dados de um cadastro de cliente, e dentre elas est o numero do Cadastro de Pessoa Fsica. Para criar uma relao que faa sentido para quem est desenvolvendo o cdigo fonte, uma sugesto seria criar uma varivel chamada CPF, ao invs de criar uma varivel chamada N, NUM, X ou outra qualquer que no faa o mnimo sentido para com seu objetivo. Lembrando tambm que variveis no podem ter seus nomes com acentuao, caracteres especiais (exceto _), espao em branco e iniciar com nmeros. Aproveitando, o exemplo anterior, poderia ser criada a varivel Cadastro de Pessoa Fsica em vez da varivel CPF? (Resposta: No. Pois possui espaos em branco)

Comando de Atribuio
Para armazenar alguma informao em uma varivel, usamos o smbolo =, efetuando assim a atribuio de um valor em uma varivel. Exemplos de atribuio de dados em variveis: A = 10; valor = 5.5; //Est sendo atribudo o nmero 10 na varivel A //Est sendo atribudo o valor 5.5 na varivel valor

nome = Tiago; //Est sendo atribudo Tiago na varivel nome Observem que quando trabalhamos com strings o contedo a ser armazenado deve estar delimitado entre aspas.

Operadores Aritmticos
Para a realizao de operaes envolvendo clculos matemticos, os operadores utilizados na Linguagem C# so: Operador + * / % Operao Adio Subtrao Multiplicao Diviso Resto da Diviso Exemplos: A = 10 + 2; B = A 5; C = 587 * A + B; valor = 5.5 / 2; C = 34 % 3;

Para exemplificar estes operadores aritmticos, vamos testar usando exemplos prticos e analisar os resultados apresentados.

Exemplo 2
Para este exemplo vamos criar um novo projeto com o nome Aula1_Exemplo2 e digitar o cdigo a seguir: using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Aula1_Exemplo2 { //incio namespace class Program { //incio class

Exemplo 2 - continuao
static void Main(string[] args) { //incio Main //Declarao de variveis int a, b, total; //Atribuio de valores a = 20; b = 10; /*Concatenao de valores a serem exibidos na tela Calculo da operao sendo realizado entre parnteses */ Console.WriteLine(a + " + " + b + " = " + (a + b));

Exemplo 2 - continuao
//Resultado do clculo da operao sendo atribudo em uma varivel total = a - b; Console.WriteLine(a + " - " + b + " = " + total); Console.WriteLine(a + " * " + b + " = " + (a * b)); Console.WriteLine(a + " / " + b + " = " + (a / b)); Console.WriteLine(a + " % " + b + " = " + (a % b)); Console.ReadKey(); //Instuo utilizada para dar uma pausa para visualizao } //fim Main } //fim class } //fim namespace

Exemplo 2 Resultado
O resultado gerado na execuo do cdigo anterior mostrado abaixo:

Observem que todo o contedo que est escrito em verde no cdigo fonte no foi mostrado na tela. Isto significa que podemos usar comentrios durante o desenvolvimento do cdigo fonte. Como visto podemos usar das seguintes maneiras: // - para comentar o que estiver escrito a direita na mesma linha /* ... */ - para comentar um trecho de cdigo

Console.WriteLine()
Responsvel por exibir uma mensagem da tela e logo em seguida pular uma linha. Observem que no primeiro exemplo o cursor ficou piscando ao fim da mensagem, na mesma linha. No exemplo 2 o cursor ficou piscando na linha abaixo da ltima mensagem. Nestes mtodos para exibio de dados na tela, notem que o que est entre aspas o que exatamente saiu na tela, e o que est fora das aspas, foi exibido o valor que est armazenado na varivel. Para compreender melhor a sintaxe desta linha de comando:

Entendendo melhor a instruo


Nesta linha de comando, vamos entender cada um dos itens:

Classe: um tipo de objeto que contm vrios mtodos (funes) prontos para serem utilizados, ou seja, que j fazem parte do pacote de bibliotecas da Linguagem C#. Toda linha de comando que estiver utilizando a classe Console, significa que estar executando uma ao sob a janela de console (tela preta) onde gerado o resultado da execuo do programa.

Entendendo melhor a instruo


Mtodos: So funes que pertencem as classes, ou seja, para exibir dados na tela podemos utilizar os mtodos Write() ou WriteLine(), para dar uma pausa no programa utilizamos o ReadKey(), para capturar um texto digitado pelo usurio e armazenar em uma varivel utilizamos ReadLine() e assim por diante. Cada classe possui um conjunto de mtodos pr-definidos. Varivel: Como j visto anteriormente nesta mesma aula, so nomes que so dados aos espaos de memria para que sejam armazenados valores, que posteriormente possam ser utilizados durante a execuo o programa. No caso as variveis a e b possuem valores do tipo inteiro.

Entendendo melhor a instruo


Concatenao: O smbolo de adio + usado para concatenar, ou seja, montar uma mensagem para que seja exibida uma mensagem organizada na tela. Podemos definir como juntar texto com variveis para que seja exibida a mensagem na tela da forma desejada. Operao: Neste caso est realmente sendo realizada uma operao de adio (soma) de duas variveis. O que difere da concatenao so exatamente os parnteses que faz o compilador interpretar que representa uma operao aritmtica.

Outra forma de exibio


Uma outra forma de exibir dados da tela utilizando os mesmos comandos (Console.Write e Console.WriteLine) a de formatao de sada. Como mostrado no exemplo a seguir:

Neste caso, o valor que est armazenado na varivel a ser exibido no lugar da {0}, o valor armazenado na varivel b ser exibido no lugar da {1}, e o valor gerado pelo resultado da operao ser exibido no lugar da {2}. Notem que o resultado da diviso um nmero real, e para que sejam exibidas duas casas decimais deste resultado necessrio formatar a sada de dados, e umas das formas usando {2:N2}, ou se quiser trs casas decimais {2:N3}.

Precedncia de Operadores
Operaes dentro dos parnteses so sempre executadas primeiro, como nas operaes matemticas. Em C#, operadores multiplicativos (*, /, %) tem precedncia sobre os aditivos (+, -). Observem a ordem de precedncia das seguintes expresses: Exemplo 1: Exemplo 2: 2+3*4 (2 + 3) * 4 2+3*4 (2 + 3) * 4 2 + 12 5*4 14 20 Perceba que a ordem de precedncia altera o valor do resultado, por isso devemos ter ateno com a precedncia.

Constantes
So nomes dados a valores que no podero ter seu contedo alterado durante a execuo de um programa, ou seja, diferente das variveis as constantes mantero o mesmo valor do incio ao fim da execuo. Para a definio de constantes utilizaremos a sintaxe: const <tipo_de_dado> <nome_da_constante> = <valor>; Exemplos de definio de constantes: const int ano = 2013; const string linguagem = C Sharp; const double pi = 3.14159265358979323846264338327950;
Obs.: Nos prximos exemplos ser mostrado apenas o contedo do Main, mas continue criando um novo projeto para cada exemplo, conforme j demonstrado.

Exemplo 3: Constante e Formatao

Exemplo 3: Resultado

Para o clculo da exponenciao, a Linguagem C# possui uma classe chamada Math que fornece vrias funes matemticas j prontas para serem utilizadas. A seguir sero listadas algumas funes fornecidas por esta classe.

Bliblioteca Math
Algumas funes matemticas da classe Math:
Funo Abs(x) Acos(x)
Asin(x)

Finalidade Valor absoluto de x Arco cosseno de x


Arco seno de x

Exemplo
Abs(3.5) = 3,5; Abs(-3.5) = 3,5;

Acos (0.3) = 1,26...


Asin(0.6) = 0,64...

Atan(x) Ceiling(x) Cos(x)


Exp(x) Floor(x) Log(x)

Arco tangente de x Arredonda x para cima Cosseno de x


Exponencial (e elevado na x) Arredonda x para baixo Logaritmo de x na base natural e

Atan(0.5) = 0,46...
Ceiling(0.1) = 1; Ceiling(-0.1) = 0;

Cos(0.5) = 0,87...
Exp(2.0) = 7,38...

Floor(0.9) = 0; Floor(-0.9) = -1;


Log(2.71) = 0,99...

Bliblioteca Math - continuao


Funo Max(x,y) Min(x) PI
Pow(x,y)

Finalidade Maior valor entre dois nmeros Menor valor entre dois nmeros Valor de pi
Valor de x elevado na y

Exemplo Max(1.5,1.7) = 1,7; Max(-0.5,-0.7) = -0,5;


Min(1.5,1.7) = 1,5; Min(-0.5,-0.7) = -0,7;

PI = 3,14...
Pow(2,4) = 16

Round(x,y) Sin(x) Sqrt(x) Tan(x)

Arredonda x para y casas decimais Seno de x Raiz quadrada de x Tangente de x

Round(5.98765,3) = 5,988 Sin(2) = 0,9... Sqrt(81) = 9 Tan(0.5) = 0,54...

Exemplo 4: Tratando Strings


O tipo string possui alguns mtodos interessantes e bem particulares. No exemplo 4 a seguir sero mostrados alguns mtodos muito utilizados.

Exemplo 4 Resultado

Mtodos usados: nome.Length retorna a quantidade de caracteres armazenadas na varivel nome.ToLower() converte o contedo da string em caracteres minsculos nome.ToUpper() converte o contedo da string em caracteres maisculos nome.Equals(sobrenome) realiza a comparao entre duas strings

Entrada de Dados
At o momento nos exemplos apresentados, no houve nenhuma interao com o usurio. Sendo que os valores foram definidos em tempo de programao, ou seja, no desenvolvimento do cdigo fonte. Agora ser apresentada uma maneira de fazer com que o usurio digite a informao e esta informao fique armazenada em uma varivel. E para isso iremos utilizar o mtodo Console.ReadLine(). Este mtodo responsvel por aguardar o usurio digitar uma informao e pressionar <enter>. Fazendo isso, a informao digitada pelo usurio ser armazenada em uma varivel. Exemplo: string <varivel> = Console.ReadLine(); Esta informao sempre ser capturada no formato de string.

Exemplo 5 - Entrada de Dados

Podemos usar o \n para pular linha, ou seja, neste exemplo ir pular uma linha antes e outra depois que for exibida a mensagem ***Informaes digitadas***.

Exemplo 5 - Resultado

Neste exemplo o nome digitado Jos foi armazenado na varivel nome e a cidade informada Araraquara foi armazenada na varivel cidade. Ambas variveis so do tipo string. Na sequencia foram exibidas as informaes que foram digitadas.

Armazenar outros tipos de dados


Conforme j vimos anteriormente, toda a informao capturada pelo Console.ReadLine() reconhecida como uma string. Portanto, para que a informao seja armazenada em uma varivel de outro tipo (diferente de string), temos que aplicar a converso de tipo adequada a cada necessidade. Exemplo de converso: int N = int.Parse(Console.ReadLine()); ou int n = Convert.ToInt32(Console.ReadLine()); O Console.ReadLine() ser responsvel por capturar a informao que o usurio digitar. Na sequencia esta informao ser convertida para inteiro pelo mtodo int.Parse() ou pelo mtodo Convert.ToInt32() . E por fim ser armazenada na varivel N que do tipo inteiro.

Mais alguns exemplos de converses


double V = double.Parse(Console.ReadLine()); //Converso de string para double ou double V = Convert.ToDouble(Console.ReadLine()); bool R = bool.Parse(Console.ReadLine()); //Converso de string para boolean ou bool R = Convert.ToBoolean(Console.ReadLine()); char L = char.Parse(Console.ReadLine()); //Converso de string para char ou char L = Convert.ToChar(Console.ReadLine()); Existem ainda outros mtodos para converso para outros tipos de dados, veremos durante o curso, de acordo com as necessidades.

Exemplo 6 Converso de Tipos de Dados

Neste exemplo a varivel nome do tipo string e por isso no necessita de converso. J para as demais variveis, devemos aplicar a converso, conforme demonstrado.

Exemplo 6 - Resultado

Logo aps o usurio digitar as informaes , ser exibida a mensagem de acordo com a formatao pr-definida. Nota: Quando trabalhamos com nmeros reais, devemos usar a vrgula , para identificar as casas decimais.

Exemplo 7 Adio de dois nmeros inteiros


Neste exemplo, o usurio dever digitar dois nmeros inteiros, na sequencia ser realizada a adio dos nmeros digitados e o resultado ser armazenado na varivel c e por fim ser exibido o resultado da operao.

Resultado

Operadores Relacionais
Em programao, se suma importncia o uso destes operadores, tendo em vista que a maioria dos problemas computacionais envolve comparaes entre valores. Como so operadores que realizaro testes comparativos entre valores, o resultado do uso destes operadores ser sempre um valor lgico, verdadeiro (true) ou falso (false). Segue tabela com os operadores relacionais usados na linguagem C# e suas aes: Operador > >= < <= == != Ao Maior do que Maior ou igual a Menor do que Menor ou igual a Igual a Diferente de

Exemplo 8 - Operadores Relacionais


Neste exemplo, o usurio dever digitar dois nmeros inteiros e ser exibido o resultado da relao entre estes dois nmeros com cada operador relacional.

Exemplo 8 Resultado

Observem que as respostas so apresentadas como valores lgicos ( boolean). Estes operadores sero muito utilizados em trechos do programa, para tomadas de decises.

Operadores Lgicos
Os operadores lgicos so usados para relacionar expresses e a partir destas comparaes, os resultados obtidos sero tambm de um tipo lgico (boolean). So usados somente em expresses lgicas, e so descritos na tabela a seguir: Operador && || ! Ao AND (E) OR (OU) NOT (NO)

O operador lgico ! (NOT) tm a finalidade de inverter o valor lgico, ou seja, se temos um valor lgico Falso, aplicando o operador resultar em Verdadeiro, e vice-versa.

Operadores Lgicos Tabela Verdade


Para auxiliar no entendimento, a seguir mostrado o resultado da operao entre valores lgicos para cada operador lgico.
p falso falso verdadeiro verdadeiro q falso verdadeiro falso verdadeiro p && q falso falso falso verdadeiro p || q falso verdadeiro verdadeiro verdadeiro

Exemplo 1: 72 > 30 && 32 <= 10 Verdadeiro && Falso Falso

Exemplo 2: 9 == 3 || 10 <= 10 Falso || Verdadeiro Verdadeiro

Exemplo 9 Operadores Lgicos


Neste exemplo, o usurio deve digitar dois valores lgicos, e na sequncia ser exibido o resultado de cada operador lgico.

Exemplo 9 Resultado

A utilizao destes operadores pode reduzir consideravelmente o nmero de linhas do cdigo fonte de um programa, evitando fazer vrias comparaes em linhas de instrues diferentes. Veremos durante o curso, outras aplicaes utilizando estes operadores.

Operadores Ternrios
composto por trs operandos (expresses/valores) separados pelos sinais ? e : Tm o objetivo de atribuir o valor a uma varivel de acordo com o resultado de um teste lgico. Veja a sintaxe dele abaixo: teste lgico ? valor se verdadeiro : valor se falso; Onde: - teste lgico qualquer valor ou expresso, que pode ser verdadeiro ou falso. - valor se verdadeiro atribudo o valor true; - valor se falso atribudo o valor false.

Exemplo 10 - Operadores Ternrios


Neste exemplo, foi realizado o teste para saber se o primeiro nmero digitado maior que o segundo nmero digitado, sendo que a resposta ser o valor da varivel verdade ou da varivel falso.

Resultado

Outros Operadores de Atribuio


So formas usadas para otimizar uma linha de instruo, que usa o valor da prpria varivel (antes o operador) para realizar o clculo e atribuir nela mesma o novo resultado. Operador = += -= *= /= %= Descrio Atribuio Simples (j visto) Atribuio Aditiva Atribuio Subtrativa Atribuio Multiplicativa Atribuio de Diviso Atribuio de Resto da Diviso

Exemplo 11 - Operadores de Atribuio

Resultado
O mesmo valido para os outros operadores.

Incremento e Decremento
Incrementar um nmero significa adicionar 1 ao valor atual. Decrementar um nmero significa subtrair 1 de um nmero atual. Operador Descrio ++ Incremento -Decremento Exemplo 1: int X = 1; X++; Exemplo 2: int X = 8; X--; //Atribuindo o valor 1 na varivel X //Incrementando 1 na mesma varivel, que passa a valer 2

//Atribuindo o valor 8 na varivel X //Decrementando 1 na mesma varivel, que passa a valer 7

Prefixo e Sufixo
Tanto o operador de incremento quanto o de decremento tem duas formas de serem aplicados: prefixo e sufixo. Prefixo: O operador est antes do nome da varivel. Ex: int X = ++Y; Quando estamos atribuindo um valor a uma varivel usando prefixo, significa que primeiro deve ser feito o incremento na varivel Y e depois atribudo o novo valor na varivel destino, que no exemplo a varivel X. Sufixo: O operador est depois do nome da varivel. Ex: int X = Y++; No caso de usarmos o sufixo, primeiro o valor de Y seria passado para a varivel X, e somente depois disso que haveria o incremento em Y.

Bibliografia
Manzano, Jos Augusto N. G., Estudo Dirigido de Microsoft Visual C# 2010 Express. So Paulo, SP, Editora rica, 2010. MSDN, Microsoft. Guia de Programao C#. Disponvel: <http://msdn.microsoft.com/pt-br/library/67ef8sbd(v=vs.80).aspx>. Acesso em 31 jan 2013 Dantas, Cleber. Operadores em C Sharp. Disponvel: <http://www.linhadecodigo.com.br/artigo/1007/serie-aprenda-csharp-operadoresem-csharp.aspx#ixzz2JW53NQkC>. Acesso em 31 jan 2013. Balbo, Wellington. Estrutura da Linguagem e Operadores em C Sharp. Disponvel: <http://www.devmedia.com.br/relacionais-logicos-e-ternario-operadores-do-cestrutura-da-linguagem-parte-3/18875>. Acesso em 31 jan 2013