Você está na página 1de 15

Linguagens de Programao ( Microsoft Visual C# )

O C# (C Sharp) uma linguagem de programao desenvolvida pela Microsoft. A escolha de C# para uso neste estudo, deve-se a sua simplicidade, versatilidade e facilidade de interao com o usurio. O fato de C# implementar orientao a eventos, torna a programao de interface um processo natural para o ambiente windows, alm de prover de forma nativa uma larga gama de componentes visuais. Outra grande vantagem do C# a possibilidade de desenvolver aplicaes web e desktop de forma muito semelhante, ou mesmo transparente ao programador. Alm disso, por ser derivada de C e C++, a linguagem C# incorpora muitas das facilidades oferecidas por essas linguagens e adequadas ao desenvolvimento de aplicaes para as reas cientficas.

Podemos considerar a estrutura bsica de uma implementao C# como sendo:

// bloco de implementao C# { < declarao de variveis > ( estrutura de dados ) < comandos > ( algoritmo ) }

Importante observar, que a estrutura completa de um programa C# vai alm da estrutura bsica acima. Todavia por motivos didticos, vamos deixar para analisar esse aspecto mais adiante. Um bloco de implementao delimitado pelos simbolos de { e }. Abre Chaves { define o incio do bloco. Fecha chaves } delimita o bloco, isto , sinaliza o fim do bloco.

INTRODUO a PROGRAMAO de COMPUTADORES


para CURSOS de ENGENHARIA e de AUTOMAO

Pgina

Declarao de variveis
C# uma linguagem classificada como fortemente tipada. Esta caracterstica significa que toda varivel declarada em C# deve estar associada a um tipo. Um varivel C# tem seu escopo limitado ao bloco em que foi declarada. Esta caracterstica de escopo diz respeito a sua visibilidade (alcance), isto ; uma varivel somente pode ser utilizada dentro do bloco em que a varivel foi declarada. Podemos dizer que uma varivel um espao alocado na memria RAM para ser utilizada por um ou mais processos que necessitam de armazenar ou manipular alguma informao. Ou ainda, variveis representam locais de armazenamento. Essas variveis so reconhecidas por um nome (identificador) que lhe atribudo, declarada da seguinte forma:

Ao ser declaradas, uma varivel tem um tipo associado a ela que determinar que valores podem ser armazenados e manipulados. O contedo de uma varivel pode mudar no decorrer do programa. Pode-se atribuir qualquer nome a uma varivel, observadas restries como: O nome deve conter letras, nmeros, ou caracteres de sublinhado ( _ ); Este nome deve conter no mximo 255 caracteres. Como definido no podemos atribuir qualquer valor a uma varivel, sem antes defini-la. Veja abaixo a sintaxe para declarao de variveis em C# e VB.NET: Se estas variveis forem declaradas dentro de um procedimento ou bloco, podero ser acessveis apenas dentro deste procedimento ou bloco. Na figura 3.1, o programa feito em C# tem um procedimento chamado de TestaVariavel( ), onde declarado uma varivel com o nome de VarEscreve.
INTRODUO a PROGRAMAO de COMPUTADORES
para CURSOS de ENGENHARIA e de AUTOMAO

Pgina

Esta varivel estar acessvel somente no procedimento em que foi declarada, neste exemplo, no procedimento TesteVariavel( ). Portanto se tentar solicitar esta varivel fora do procedimento acontecer um erro.
importante ressaltar que voc adote um padro para a declarao destas variveis, para facilitar possveis reparos no sistema desenvolvido.

Para C#: TIPO NomeDaVariavel Exemplo: string Recebe_Indice;

Figura 3.1 programa em C#. Na figura 3.2, um programa em Visual Basic.Net , tem um exemplo de uma varivel declarada com o nome VarEscreve em um bloco de execuo. Esta varivel ser acessvel apenas neste bloco de execuo, qualquer chamada a esta varivel fora, vai ocorrer um erro. Figura 3.2 - programa em Visual Basic.net

Dica: utilize nomes que sejam adequadamente descritivos. No utilize


nomes de variveis temporrias, nem reutilize nomes isso vai tomar o cdigo confuso!
using System; public class BlocoTeste { public void TestaVariavel( ) { string VarEscreve; // ser acessvel apenas neste procedimento VarEscreve = "Teste de varivel"; Console.WriteLine(VarEscreve); } public static void Main( ) { BlocoTeste objBloco = new BlocoTeste( ); objBloco.TestaVariavel( ); } } Imports System Public Class BlocoTeste Public Shared Sub Main() Dim K AS Integer For K = 1 To 10 Dim VarEscreve E AS Integer ser acessvel apenas neste bloco If (k Mod 2) = 0 Then VarEscreve = k Console.WriteLine(VarEscreve) INTRODUO a PROGRAMAO de COMPUTADORES
para CURSOS de ENGENHARIA e de AUTOMAO

Pgina

End If Next K End Sub End Class


Curso de Introduo a Plataforma .Net FrameWork SDK

18

3.1 Variveis na linguagem C#.


Na linguagem C# as variveis esto agrupadas em algumas categorias como: Static: Existe apenas uma nica cpia desta varivel para todas as instancias de uma classe. Uma varivel static comea a existir quando um programa comea a executar, e deixa de existir quando o programa terminar. Instance: existe uma cpia para cada instancia de uma classe. Uma varivel Instance comea a existir quando uma instancia daquele tipo criado, e deixa de existir quando no houver nenhuma referncia quela instancia ou quando e mtodo Finalize executado. Array: uma matriz que criada em tempo de execuo. Tipos Podemos armazenar muitos tipos de informaes diferentes dentro de uma varivel, como nmeros, datas, e strings. Nesta linguagem, seus tipos podem ter dois tipos: Por Valor: os valores so gerenciados diretamente na memria. Por Referencia: os valores so passados por meio de um ponteiro. Inteiros (por valor) Este tipo um numero inteiro sem frao ou parte decimal. Por exemplo, o nmero 1058 um numero inteiro. O tipo inteiro subdividido em alguns subtipos. Veja a figura 3.1.1 que mostra estes tipos de inteiro. Figura 3.1.1 tipos de inteiro. Tipo Descrio
byte Inteiro de 1 bit sem sinal (0 a 255) sbyte Inteiro com sinal de 8 bits (-127 a 128) int Inteiro de 32 bits com sinal (-2.147.483.648 a 2.147.483.147) uint Inteiro de 32 bits sem sinal (0 a 4.294.967.295) long Inteiro com sinal de 64 bits (-9.223.372.036.854.775.808 a 9.223.372.036.854.775.807) ulong Inteiro sem sinal de 64 bits (0 a 18.446.744.073.709.551.615) short Inteiro com sinal de 16 bits (-32.768 a 32.767) ushort Inteiro sem sinal de 16 bits (0 a 65.535)

Exemplos: byte VarIdade = 25;


INTRODUO a PROGRAMAO de COMPUTADORES
para CURSOS de ENGENHARIA e de AUTOMAO

Pgina

int VarValor = 1.542; long VarValor = 5.684.548.520; short VarInd = 25.620;


Curso de Introduo a Plataforma .Net FrameWork SDK

19

Lgicos (por valor) Esses tipos so usados para comparao. Portanto esses tipos s podem assumir os valores verdadeiro ou falso. Tipo Descrio
bool true ou false

Exemplos: bool VarDesativado = false; bool VarCondicao = true; Caracteres (por valor) Este tipo armazenado em 16 bits, representa um caractere de uma string. Essas variveis so armazenadas no padro Unicode. Tipo Descrio
char Um nico caractere Unicode de 16 bits.

Exemplos: Char VarChar = a; Representa um caractere literal. Char VarChar = \x0025; Representa um caractere hexadecimal. Char VarChar = \u0025; Representa um caractere Unicode. Char VarChar = (char)25; Retorna o caractere correspondente na Tabela ASCII. Figura 3.1.2 - neste exemplo retornado o valor correspondente ao caractere 25 da tabela ASCII.
using System; public class CharTeste { public static void Main() { char VarTeste = (char)25; Console.WriteLine(VarTeste); } }
Curso de Introduo a Plataforma .Net FrameWork SDK

20

Ponto Flutuante (por valor) As variveis com este tipo possuem nmeros com ponto flutuante utilizando o padro IEEE de 4 a 8 bytes.
INTRODUO a PROGRAMAO de COMPUTADORES
para CURSOS de ENGENHARIA e de AUTOMAO

Pgina

Tipo Descrio
double Ponto flutuante binrio de 8 bytes ( 1.5 x 10 -45 a 1.7 x 10308 ) Este tipo tem uma preciso de 15 casas decimais. float Ponto flutuante binrio de 4 bytes ( 1.5 x 10 -45 a 3.4 x 1038 ) Este tipo tem uma preciso de 7 casas decimais.

As operaes com este tipo no geram erros, mas h alguns ressaltos que devemos saber: Se o valor retornado para a varivel conter um nmero muito pequeno, este valor torna-se zero. Uma diviso por zero no causa um erro, mas produzido um valor infinito. Operaes de ponto flutuante devolvem NaN (Not a Number) para sinalizar que aquele resultado da operao indefinido. Portanto se um dos operadores for NaN o resultado retornado ser NaN. Exemplos: float VarIndice = 3.1356F; double VarCorrecao = 5.12D; Decimal (por valor) O tipo decimal representa com mais preciso nmeros no inteiros e com um valor muito alto. Tipo Descrio
decimal Ponto flutuante decimal de 128 bytes ( 1.5 x 10 -45 a 1.7 x 10308 ) Este tipo tem uma preciso de 28 casas decimais.

Exemplos: decimal VarIndice = 560.5m; decimal VarCorrecao = 545.2m;


Curso de Introduo a Plataforma .Net FrameWork SDK

21

String (por referncia) Este tipo pode conter at 1 gigabyte de caractere e alocado dinamicamente, por isso dizemos que este tipo por referncia. Tipo Descrio
string Unicode com at 1 gigabyte de caractere.

Exemplos: string VarNome = Claudio Junior; string VarEmail = claudiojunior@estadao.com.br; string VarConcatenar = VarNome + VarEMail; As strings so compostas por caracteres e podem conter literais caracteres. Veja a representao dos literais strings: Tipo Descrio
INTRODUO a PROGRAMAO de COMPUTADORES
para CURSOS de ENGENHARIA e de AUTOMAO

Pgina

\ Apstrofo \ Aspas \\ Barra invertida \0 Zero binrio ou nulo \a Alerta \b Retrocesso \f Avano de pgina \n Salto de linha \r Retorno de carro \t Tabulao horizontal \v Tabulao vertical \uNNNN NNNN o cdigo em hexadecimal

Uma representao importante das string a arroba ( @ ), utilizada para especificar nomes de arquivos e pastas. Exemplos: string VarLinha = Pula Linha \n; string VarCaminho = @c:\temp\oledb.txt; Neste caso com o uso da arroba ( @ ) a representao dos caracteres de barra invertida ( \ ) no feita dentro da string.
Curso de Introduo a Plataforma .Net FrameWork SDK

22

Object (por referncia) Este tipo muito utilizado por programadores, um termo geral para uma varivel que no especificado como outro tipo de dados, por isso torna-se um tipo universal. Em certas situaes torna-se indispensvel atribuir e instanciar um objeto. Tipo Descrio
object Atribuir a um objeto.

Exemplos: Object VarNome = Rubens Barrichello; Este objeto recebe o valor de uma string. Object VarIdade = 29; Este objeto recebe o valor de um numero; Object VarAtivar = true; Este objeto recebe um valor lgico. Converso de Valores Converter um tipo de dado em nmero ou em literal comum em situaes de programao. Quando esta aplicao for destinada a Web com intervenes de internautas, esse recurso utilizado com mais freqncia ainda. comum o internauta testar a aplicao para ter certeza que o desenvolvedor se preocupou com as devidas converses de valores. Devemos considerar alguns aspectos para a converso de nmeros: Como existem diversos tipos de nmeros, inteiros, ponto flutuante ou
INTRODUO a PROGRAMAO de COMPUTADORES
para CURSOS de ENGENHARIA e de AUTOMAO

Pgina

decimal, os valores so convertidos sempre para o tipo de maior faixa de valores. Por exemplo, o tipo long convertido para o ponto flutuante, mais importante ressaltar que o contrario causa um erro. Os tipos de menor faixa so convertidos para os de maior faixa. Por exemplo, o tipo int pode ser convertido para: long, float, double ou decimal. A converso dos tipos de ponto flutuante(float, double) para decimal causa erro. A converso entre os tipos com sinal e sem sinal de valores inteiros com o mesmo tamanho causa erro. Por exemplo, entre o tipo int e unit.
Curso de Introduo a Plataforma .Net FrameWork SDK

23

Caso precise forar uma converso mesmo que haja perda de informaes, a linguagem disponibiliza um operador com este recurso. Exemplos: int VarValor = (int)8544555L; Neste caso a varivel inteira vai receber o quanto poder suportar do tipo long. long VarValor = (long)29.145; Neste caso a varivel inteira do tipo long suportar o quanto for possvel do nmero no inteiro. Em alguns casos os tipos de converso no precisam ser especificados pelo desenvolvedor, essa converso feita automaticamente. Figura 3.1.3 - os tipos de converso automtica: Tipo Converte em
sbyte short, int, long, float, double, decimal byte short, ushort, int, uint, long, ulong, float, double, decimal short int, long, float, double, decimal ushort int, uint, long, ulong, float, double, decimal int long, float, double, decimal uint long, ulong, float, double, decimal long float, double, decimal ulong long, double, decimal char ushort, int, uint, long, ulong, float, double, decimal float double

Exemplos: int VarInteiro = 32450; long VarLong = VarInteiro; float VarFloat = VarLong; double VarDouble = VarFloat; decimal VarDecimal = VarLong; byte VarByte = (byte)VarInteiro;
INTRODUO a PROGRAMAO de COMPUTADORES
para CURSOS de ENGENHARIA e de AUTOMAO

Pgina

int VarInteiro = (int)31.245F;


Curso de Introduo a Plataforma .Net FrameWork SDK

24

Checked e Unchecked Toda converso pode causar erro , mas existe uma forma de forar a converso sem que cause um erro. Para isso so utilizados o checked e o unchecked. Figura 3.1.4 Exemplo do checked e do unchecked. Veja a sada deste programa:
using System; public class Checar { public static void Main() { int X = 2147483647; int Y = 2; int Produto = 0; unchecked { Produto = X * Y; Console.WriteLine("Resultado da Converso: "+Produto); // retorna -2 } checked { try { Produto = X * Y; Console.WriteLine("Resultado da Converso: "+Produto);
// Causa erro na compilao

} catch(OverflowException e) { Console.WriteLine("Mensagem de Erro: "+e.ToString()); } } }


Curso de Introduo a Plataforma .Net FrameWork SDK

25

Operadores Operadores so smbolos utilizados para efetuar alguma ao. Veja a tabela de operadores que o C# suporta. Tipo Operador
aritmticos + - * / % lgicos & | ^ ! ~ && || concatenao + Incremento e decremento ++ -INTRODUO a PROGRAMAO de COMPUTADORES
para CURSOS de ENGENHARIA e de AUTOMAO

Pgina

deslocamento << >> relacional < > <= >= Igualdade == != atribuio = *= /= %= += <<= >>= &= ^= condicional ? : criao de objetos new primrios typeof sizeof is checked unchecked

Tipos definidos pelo programador Uma grande maioria das linguagens de programao permite ao desenvolvedor definir seus prprios tipos, que podem ser usados em qualquer situao que normalmente um outro tipo poderia ser utilizado. Enum (por valor) O tipo enum usado para declarar uma enumerao, um tipo distinto que consiste em um jogo de constantes nomeadas chamadas a lista de enumerados. Figura 3.1.5 exemplo de um tipo enum, definido pelo desenvolvedor.
using System; public class EnumTest { enum Days {Sat=1, Sun, Mon, Tue, Wed, Thu, Fri}; public static void Main() { int x = (int) Days.Sun; int y = (int) Days.Fri; Console.WriteLine("Sun = {0}", x); Console.WriteLine("Fri = {0}", y); } }
Curso de Introduo a Plataforma .Net FrameWork SDK

26

Veja a sada do programa da figura 3.1.5. Struct (por valor) Permite declarar tipos que contem diversos valores identificados pelo nome. Um tipo de struct um tipo de valor que pode conter construtores, constantes, campos, mtodos, propriedades, dentre outros. A declarao de um struct leva a forma seguinte: Figura 3.1.6 exemplo de um tipo struct.

Atributo struct IdentificadorDoTipo


using System; public struct Point { public int x, y; public Point(int x, int y) { this.x = x; INTRODUO a PROGRAMAO de COMPUTADORES
para CURSOS de ENGENHARIA e de AUTOMAO

Pgina

10

this.y = y; } } class MainClass { public static void Main() { // Declare an object: Point myPoint; // Initialize: myPoint.x = 10; myPoint.y = 20; // Display results: Console.WriteLine("My Point:"); Console.WriteLine("x = {0}, y = {1}", myPoint.x, myPoint.y); } }
Curso de Introduo a Plataforma .Net FrameWork SDK

27

Veja a sada do programa da figura 3.1.6. New Independente do tipo todas as variveis podem ser inicializadas com o operador new. Caso sejam do tipo class, struct ou array, este operador obrigatrio. Exemplos do operador new: Para tipos primitivos: Para classes: Para structs: No exemplo a seguir temos a criao de um tipo definido pelo desenvolvedor, o tipo struct, e a criao de um objeto de classe.
Tipo NomeVariavel = new Tipo( ); Int Valor = new int( ); NomeClasse NomeInstancia = new NomeClasse( ); ClasseAluno ObjAluno = new ClasseAluno( ); NomeStruct InstanciaTipo = new NomeStruct( ); RegistroAluno RegAluno = new RegistroAluno( );
Curso de Introduo a Plataforma .Net FrameWork SDK

28 using System; class NewTest { struct MyStruct { public int x; public int y; public MyStruct (int x, int y) INTRODUO a PROGRAMAO de COMPUTADORES
para CURSOS de ENGENHARIA e de AUTOMAO

Pgina

11

{ this.x = x; this.y = y; } } class MyClass { public string name; public int id; public MyClass () { } public MyClass (int id, string name) { this.id = id; this.name = name; } } public static void Main() { // Criao de objetos usando o construtor sem valores. MyStruct Location1 = new MyStruct(); MyClass Employee1 = new MyClass(); // Valores de sada: Console.WriteLine("Valores Default:"); Console.WriteLine(" Membros do Struct: {0}, {1}", Location1.x, Location1.y); Console.WriteLine(" Membros da Classe: {0}, {1}", Employee1.name, Employee1.id); // Criando objetos usando construtores parametrizados: MyStruct Location2 = new MyStruct(10, 20); MyClass Employee2 = new MyClass(1234, "John Martin Smith"); // Valores de sada: Console.WriteLine("Valores Inicializados pelo construtor:"); Console.WriteLine(" Struct members: {0}, {1}", Location2.x, Location2.y); Console.WriteLine(" Class members: {0}, {1}", Employee2.name, Employee2.id); } }
Curso de Introduo a Plataforma .Net FrameWork SDK

29

Arrays Um tipo array uma matriz de valores do mesmo tipo, que criada em tempo de execuo, podendo ser acessada por meio de um ndice. A declarao do array sempre faz o uso de um colchete( [ ] ) depois do tipo da
INTRODUO a PROGRAMAO de COMPUTADORES
para CURSOS de ENGENHARIA e de AUTOMAO

Pgina

12

varivel. O uso da instruo new sempre deve ser utilizado, pois obrigatrio. O tipo array pode ter diversas dimenses, o tamanho desta definido pelo desenvolvedor, mas devemos saber que o primeiro ndice sempre zero. No tipo array devemos sempre inicializar seus elementos, pois obrigatrio tambm. Veja abaixo a forma de sintaxe para a declarao de arrays. Veja abaixo a forma de sintaxe para a declarao de um array de duas ou mais dimenses. Veja abaixo a forma de sintaxe para a declarao de uma matriz de arrays. Veja abaixo a forma de sintaxe para a inicializao de arrays.
TIPO [ ] NomeDoArray = new TIPO [ tamanho do array ]; float [ ] ValorIndice = new float [ 10 ]; string [ ] ElementoVetor = new string [ 10 ]; TIPO [ , ] NomeDoArray = new TIPO [ tamanho do array, tamanho do array ]; float [ , ] ValorIndice = new float [ 10 , 10 ]; string [ , , ] ElementoVetor = new string [ 10 , 10 , 10 ]; TIPO [ ] [ ] NomeDoArray = new TIPO [ tamanho do array ] [ tamanho do array ]; float [ ] [ ] ValorIndice = new float [ 10 ] [ 10 ]; string [ ] [ ] [ ] ElementoVetor = new string [ 10 ] [ 10 ] [ 10 ]; TIPO [ ] NomeDoArray = new TIPO [ tamanho do array ] { valores }; float [ ] ValorIndice = new float [ 5 ] { 1.25, 2, 3.23, 1.32, 5 }; string [ , ] ElementoVetor = new string[3, 3] {{ab, ac, bc} , {ab, ac, bc}}; int [ ] [ ] MatrizDeInteiro = new int [ 2 ] [ ]; MatrizDeInteiro[ 0 ] = new int [ 5 ] {1,3,5,7,9}; MatrizDeInteiro[ 1 ] = new int [ 4 ] {2,4,6,8};
Curso de Introduo a Plataforma .Net FrameWork SDK

30

Exemplos e Exerccios: Exemplo 01 comparao. Veja a sada do programa acima:


using System; public class Comparacao { public static void Main( ) { // Exemplos com nmeros. Console.Write("10 == 10: "); Console.WriteLine(10 == 10); Console.Write("10 != 10: "); Console.WriteLine(10 != 10); // Exemplos com objetos. object objeto1 = 10; object objeto2 = 10; Console.Write("objeto1 == objeto2: "); Console.WriteLine(objeto1 == objeto2); INTRODUO a PROGRAMAO de COMPUTADORES
para CURSOS de ENGENHARIA e de AUTOMAO

Pgina

13

// Exemplos com strings. string VarA = "Unifenas"; string VarB = "Unifenas"; string VarC = String.Copy(VarA); Console.Write("VarA == VarB: "); Console.WriteLine(VarA == VarB); Console.Write("(object)VarA == (object)VarB: "); Console.WriteLine((object)VarA == (object)VarB); Console.Write("(object)VarA == (object)VarC: "); Console.WriteLine((object)VarA == (object)VarC); Console.Write(" VarA + VarB : "); // Concatenando strings Console.WriteLine(VarA + VarB); } }
Curso de Introduo a Plataforma .Net FrameWork SDK

31

Exemplo 2 Operaes matemticas. Veja a sada do programa acima:


using System; public class OperacoesMat { public static void Main( ) { int Valor1; // forma normal int Valor2 = new int ( ); // forma alternativa Valor1=Valor2=10; Console.WriteLine(" Valor1 = Valor2 = 10: "); Console.WriteLine(" Valor1: "+Valor1); Console.WriteLine(" ++Valor1: "+ ++Valor1); Console.WriteLine(" Valor2- - : "+Valor2--); Console.WriteLine(" Valor1 + 15 : "+(Valor1 + 15)); Console.WriteLine(" Valor2 - 5 : "+(Valor2 - 5)); } }
Curso de Introduo a Plataforma .Net FrameWork SDK

32

Exemplo 3 operadores lgicos: Veja a sada do programa acima:

INTRODUO a PROGRAMAO de COMPUTADORES


para CURSOS de ENGENHARIA e de AUTOMAO

Pgina

14

C# apresenta um conjunto de tipos bsicos conhecido como tipos primitivos, ou fundamentais, por serem suportados diretamente pelo compilador.

Intervalo sbyte byte short ushort int uint long ulong -128 to 127 0 to 255 -32.768 to 32.767 0 to 65.535 -2.147.483.648 to 2.147.483.647 0 to 4.294.967.295 -9.223.372.036.854.775.808 to 9.223.372.036.854.775.807 0 to 18.446.744.073.709.551.615

Tamanho Signed 8-bit inteiro Inteiro de 8 bits sem sinal Signed 16-bit inteiro Inteiro de 16 bits sem sinal Inteiro de 32 bits sem sinal Inteiro de 32 bits sem sinal Signed 64-bit inteiro Inteiro de 64 bits sem sinal

Intervalo aproximado float double 1.5e-45 to 3.4E38 5.0e-324 to 1.7e308

Preciso 7 digitos 15-16 dgitos

INTRODUO a PROGRAMAO de COMPUTADORES


para CURSOS de ENGENHARIA e de AUTOMAO

Pgina

15

Você também pode gostar