Curso Completo de .Net e C# - Parte III

Primeiros conceitos de como trabalhar com valores

 

Olá amigos, aqui estamos para prosseguir com o conteúdo do curso. Ainda estamos no que se pode classificar de propedêutica do curso (isso mesmo, andei lendo um dicionário) mas sempre avançando em conhecimento.

 

Variáveis

O tema variáveis é de grande importância pois sempre estamos necessitando armazenar valores, sejam esses passados pelo usuário ou até mesmo obtidos do sistema. As variáveis são espaços reservados na memória e sua declaração segue a seguinte sintaxe [modificador de acesso][tipo atributo]<tipo da variável><identificador>. Sintaxe é a forma estabelecida de se usar um comando específico, os valores entre colchetes [] representam valores opcionais já os valores entre o sinal de menor e maior <> são valores obrigatórios e sempre serão digitados. O modificador de acesso diz qual é o alcance que essa variável terá, a tabela da Figura 01 mostra quais são os possíveis modificadores e seu alcance, quando esse valor não é digitado o padrão(default) usado é private. O tipo atributo define se a variável terá o seu valor constante(const), se terá o seu valor somente para leitura(readonly) ou um valor estático(static). O tipo da variável diz qual valor ela recebe ou armazena, veja na tabela da Figura 02 alguns possíveis tipos e seus respectivos valores. O identificador da variável é o nome que ela terá no programa, uma boa prática de programação é sempre dar nomes que tragam significado para o valor que será guardado naquela variável. Um exemplo disso é uma variável que irá armazenar a idade de um cliente, não faz sentido nomeá-la como “cor” e sim “idade”. Existem algumas outras recomendações para declaração de variáveis, entre elas não usar underline(_) no nome, sempre iniciar um nome de variável com letra minúscula e se ela for composta por mais de uma palavra mostre isso começando a nova palavra com uma letra maiúscula, exemplo “idadeDoCliente”. Nunca escreva o nome da variável somente com letra maiúscula. Existem alguns nomes que estão na lista de palavras reservadas pela linguagem C# e que não podem ser utilizadas como identificador, quando você usa o Visual Studio 2005 essas palavras aparecem em azul o que nos ajuda na identificação (Figura 03).

 

Modificador

Descrição

 

Private

Acesso limitado aos membros da classe. Não pode ser acessado fora do bloco da classe e nem pelas classes derivadas. <default>

 

Public

Acesso ilimitado, é possível acessar mesmo fora do bloco da classe e das classes derivadas da mesma.

Protected

Acesso limitado aos membros da classe. Pode ser acessado pelas classes derivadas.

 

Internal

Acesso limitado ao Assembly que o contém. Pode ser acessado pelos objetos derivados da classe.

 

Protected Internal

Ele permite que seja usado o modificador Protected ou Internal. Sendo sua utilização baseada no contexto.

Figura 01. Tabela com os modificadores de acesso

 

Tipo

Tamanho em memória

Intervalo de Valores

bool

4 bytes

true ou false

byte

1 byte

0 até 255

sbyte

1 byte

-128 até 127

short

2 bytes

-32.768 até 32.767

int

4 bytes

-2.147.483.648 até 2.147.483.647

long

8 bytes

-9.223.372.036.854.775.808 até 9.223.372.036.854.775.807

ushort

2 bytes

0 até 65.535

uint

4 bytes

0 até 4.294.967.295

ulong

8 bytes

0 até 18.446.744.03.709.551.615

float

4 bytes

+/-3.4028235X1038 até +/-1.401298X10-45

decimal

16 bytes

+/- 1X10-28 até +/- 7.9X1028 (128-bits)

 

double

 

 

8 bytes

+/-1.79769313486231570X10308 até +/-

4.94065645841246544X10-324

char

2 bytes

Um caracter unicod de 16-bits

DataTime

8 bytes

Data e Hora

 

Object

4 bytes(plataforma 32 bits) ou

8 bytes(plataforma 64 bits)

 

Qualquer tipo

Figura 02. Tabela com alguns tipos

 

abstract

as

base

bool

break

byte

case

catch

char

checked

class

const

continue

decimal

default

delegate

do

double

else

enum

event

explicit

extern

false

finally

fixed

float

for

foreach

goto

if

implicit

in

int

interface

internal

is

lock

long

namespace

new

null

object

operator

out

override

params

private

protected

public

readonly

ref

return

sbyte

sealed

short

sizeof

stackalloc

static

string

struct

switch

this

throw

true

try

typeof

uint

ulong

unchecked

unsafe

ushort

using

virtual

void

volatile

while

 

 

 

Figura 03. Tabela com todas as palavras reservadas do C#

 

Sempre que chegamos nessa parte do curso surge a dúvida da utilidade desse assunto, pois parece que estamos estudando um tema que não possui um valor significante para nosso objetivo maior que é o de desenvolver logo nosso próprio sistema. Essa impressão é falsa pois nunca conseguiremos produzir alguma coisa se não tivermos um bom conhecimento desse assunto, ele nos diz muita coisa referente aos valores que iremos utilizar e como trabalhar com eles. Mas normalmente a maior dúvida é porque de tantos tipos de variáveis se poderia simplesmente existir um tipo que suportasse todos valores possíveis, assim facilitaria grandemente a nossa vida. Tenho que lhe confessar que também já me perguntei isso e talvez por esse motivo possa lhe explicar o que acontece. Quando comparamos variáveis numéricas do tipo long que comporta o intervalo de valores de -9.223.372.036.854.775.808 até 9.223.372.036.854.775.807 e o tipo byte que comporta o singelo intervalo de valores de 0 até 255 fica a pergunta no ar – onde utilizar o tipo byte ? E a resposta poderia ser em uma variável para armazenar a idade dos clientes, pois um cliente nunca vai ter menos de 0 anos de vida e se não estiver em histórias bíblicas possivelmente não alcançara uma idade maior do que 255 anos. Ai você como um bom aluno aceitaria essa minha explicação, mas ainda não sanaria a dúvida, pois mesmo não existindo cliente com mais de 255 anos seria possível colocar esse valor em um tipo long, ai eu terei que concordar e usar a explicação lógica e verdadeira para a existência de tantos tipos de valores. Isso ocorre pelo simples motivo do uso da memória, como você pode observar na tabela da Figura 02, cada tipo de valor possui um tamanho em memória e isso é de grande importância quando estamos tratando de performance de software. Apesar dos computadores atuais possuírem um grande poder de processamento sempre se busca usar a menor quantidade de memória e espaço possível do nosso cliente, e quando falamos de internet o tema fica mais sério, pois apesar do avanço do uso da banda larga o tráfego de informações na rede ainda é bem limitado. Então na verdade quando usamos o tipo byte para idade não estamos observando o valor comportado pelo tipo, mas sim o tamanho que ele ocupará em nosso sistema. Essa também é uma boa prática de programação, sempre busque utilizar recursos que o ajudem na performance do programa. Mas não se preocupe em decorar valores e tamanhos de tipos agora, sempre que precisar use a tabelinha da Figura 02 e com o passar do tempo a escolha do tipo apropriado para o uso vai torna-se automático.

 

Abaixo segue um modelo básico de declaração e atribuição de variáveis. É bom sempre lembrar que o C# é case-sensitive, ou seja, faz distinção entre maiúsculo e minúsculo então tome cuidado com esse detalhe. Apesar de a linguagem fazer distinção entre nomes com ou sem letras maiúsculas a prática de distinguir nomes de variáveis somente pelo uso de maiúsculo ou minúsculo não é nem um pouco recomendado, pois torna o programa difícil de compreender. E antes de mostrar o exemplo, devo dizer que variáveis sempre estão dentro do bloco de uma classe e terminam com ponto-e-vírgula ( ; ), isso também é importante lembrar.

 

    using System;

    class Program

    {

        static void Main(string[] args)

        {

            //Declaração de variáveis

            int valor1;

            string nome1;

   

10ª           //Atribuição de valores a variáveis

11ª           valor1 = 10;

12ª           nome1 = "carro";

13ª

14ª           //Declaração e Atribuição de valores a variáveis

15ª           int valor2 = 20;

16ª           string nome2 = "moto";

17ª       }

18ª   }

Listagem 01. Formas de declarar e atribuir valores a variáveis

 

Esse bloco de código mostra como se declara e atribui valores a variáveis. Não irei descrever linha a linha como fiz no artigo anterior somente irei comentar cada pedaço de código importante nesse momento. Na 7ª linha estamos declarando uma variável com o nome valor1 do tipo int, na 8ª linha outra variável chamada de nome1 do tipo string. A 11ª linha mostra a atribuição de valor à variável valor1 e na 12ª linha a atribuição de valor à variável nome1, note que o valor passado para uma variável do tipo string deve está entre aspas dupla ( “” ). Podemos também declarar e atribuir valores a variáveis na mesma linha é o que acontece na 15ª e 16ª linha. Observe também que as variáveis estão dentro do método Main() mas poderiam está fora dele desde que estejam dentro do bloco de uma classe.

 

Operadores

Quando trabalhamos com valores sempre existe a necessidade de efetuar operações matemáticas para podermos obter resultados e tornar a utilização do computador mais próxima de nossas tarefas cotidianas. É nesse contexto que surge a utilização dos operadores.

 

Operador

Descrição

+ (Adição)

Usado para somar valores numéricos. Ex.: 2 + 3 = 5

- (Subtração)

Usado para subtrair valores numéricos. Ex.: 8 – 3 = 5

* (Multiplicação)

Usado para multiplicar valores numéricos. Ex.: 3 * 4 = 12

/ (Divisão)

Usado para dividir valores numéricos. Ex.: 10 / 2 = 5

% (Resto)

Usado para obter o resto de uma divisão dos valores numéricos. Ex.: 12 / 5 = 2

Figura 03. Tabela de operadores numéricos

 

Com esses operadores podemos realizar grande parte de nossas atividades. A utilização desses operadores se restringe aos tipos numéricos(byte, int, long, double, etc) e sua utilização em outros tipos que não sejam numéricos ocasionarão erro no programa. O sinal de adição (+) pode ser utilizado para concatenar(juntar) strings mas sua utilização apresenta baixa performance e no próximo artigo será tratado o tema de como trabalhar com textos. Nossos matemáticos de plantão podem ter sentido a falta de operadores como de potenciação, radiciação e alguns outros, mas eu tenho uma boa informação para vocês, é possível fazer esses cálculos utilizando somente esses operadores apresentados, mas se por algum motivo vocês não estiverem dispostos a fazer isso na mão existe a classe chamada Math dentro do namespace System que trata de cálculos matemáticos. Exemplo é o Math.Pow(double x, double y) que significa xy onde você pode colocar valores do tipo double(olha ai mais um bom motivo para você entender sobre tipos) e obter o resultado desse cálculo, mas se sinta a vontade de fazer na mão se quiser.

 

    using System;

    class Program

    {

        static void Main(string[] args)

        {

            //Declaração de variáveis

            int valor1, valor2, valor3;

            //atribuição de Valores a variáveis

10ª           valor1 = 10;

11ª           valor2 = 20;

12ª           valor3 = 30;

13ª

14ª           //Imprimindo as variáveis no console

15ª           Console.WriteLine(valor1 + valor2);

16ª           Console.WriteLine(valor2 * valor3);

17ª           Console.Read();

18ª       }

19ª   }

Listagem 02. Utilização de operadores matemáticos

 

A Listagem 02 apresenta uma utilização básica dos operadores matemáticos e mostra mais uma característica na declaração das variáveis que é a possibilidade de se declarar mais de uma variável do mesmo tipo por linha, somente separando cada uma por vírgula(7ª linha). O resultado apresentado será o da soma de valor1 que é 10 com valor2 que é 20 (15ª linha), ou seja, será exibido na tela 30. Na 16ª linha aparece a multiplicação das variáveis valor2 = 20 e valor3 = 30 que resulta em 600.

 

E outra vez chegamos ao final de mais uma parte do nosso curso. Como vocês podem notar o nível de informação está aumentando gradativamente e com isso continuamos aprendendo mais sobre C#. Procure sempre treinar o que você aprendeu para fixar o conteúdo. Esse tema ainda não está encerrado aqui no curso, no próximo artigo iremos nos aprofundar um pouco mais e tratar sobre novos assuntos relacionados. E claro, estou sempre à disposição para ajudar nas dúvidas que forem surgindo e para receber críticas e sugestões sobre o conteúdo e a forma abordada dos assuntos. Abraços e até mais...

Leia também