Pesquisar este blog

quarta-feira, 28 de agosto de 2013

Estrutura Condicional C#

Estrutura condicional:

As estruturas condicionais dos programas será a primeira condição lógica explorada neste curso. Existem dois tipos de estrutura condicional no C# o if else (se e senão) e o switch case (escolha caso).

Condições

As estruturas condicionais sempre avaliam se uma condição é verdadeira ou não, caso ela seja verdadeira o programa irá executar uma parte do código.

Comando Nome Definição
> Maior Retorna verdadeiro quando o atributo do lado esquerdo é maior do que o atributo do lado direito.
< Menor Retorna verdadeiro quando o atributo do lado esquerdo é menor do que o atributo do lado direito.
>= Maior igual Retorna verdadeiro quando o atributo do lado esquerdo é maior do que o atributo do lado direito ou se os atributos são iguais.
<= Menor igual Retorna verdadeiro quando o atributo do lado esquerdo é menor do que o atributo do lado direito ou se os atributos são iguais.
== Igual Retorna verdadeiro quando os dois lados da comparação são iguais
!= Diferente Retorna verdadeiro quando os dois lados da comparação são diferentes
| Ou lógico Retorna verdadeiro quando um dos dois lados é verdadeiro, executa os dois lados da condição.
|| Ou condicional Retorna verdadeiro quando um os dois lados da comparação é verdadeiro, mas não executa o segundo lado quando o primeiro for verdadeiro.
^ Ou exclusivo Retorna verdadeiro quando somente um os dois lados da comparação é verdadeiro.
& E lógico Retorna verdadeiro quando os dois lados da comparação é verdadeiro. Executa os dois lados da condição.
&& E condicional Retorna verdadeiro quando os dois lados da comparação é verdadeiro. Só executa o segundo lado da condiçao quando o primeo é verdadeiro.

IF ELSE

O if/else é usado quando precisamos testar uma condição em nosso programa, por exemplo, caso você queira fazer um programa que cumprimente o usuário, quando ele entre no seu programa. Se o horário for entre 06 e 12, o seu programa irá falar Bom dia <Nome do usuário>, caso o horário de entrada do usuário seja entre 12:01 e 18hs o sistema irá dizer: Boa tarde, <Nome do usuário>
e finalmente caso o horário seja entre 18:01 e 24h o sistema irá dizer, boa noite <Nome do usuário>
Este é um típico uso de if/else, no if definimos a condição para o programa executar uma parte do código e ele funciona da seguinte maneira:
if( condição booleana ) { // se ou caso a condição é verdadeira
código a ser executado quando a condição é verdadeira
} else { // senão
código a ser executado quando a condição booleana é falsa
Exemplo de código usando uma comparação:

int numero2 = 2;
int numero3 = 3;
if(numero2 % 2 == 0){
   Console.WriteLine("A variável número2 é par");
}else{
   Console.WriteLine("A variável número2 é impar");
}
if(numero3 % 2 == 0){
   Console.WriteLine("A variável número3 é par");
}else{
   Console.WriteLine("A variável número3 é impar");
}
Veja a comparação que estamos fazendo no primeiro if é, se o resultado do resto da divisão por 2 é 0, então significa que o número é par, senão o número é impar.
As mesmas comparações podem ser realizadas com todos os outros condicionais como o >, o <, etc.

Switch Case

Switch case é uma operação usada para testar uma condição em uma lista de possibilidades. Esta condição pode ser usada em variáveis do tipo inteiro ou string. O switch case só testa condições de igualdade, não há testes de maior,menor ou diferente. A declaração de switch funciona da seguinte maniera:
switch (<nome_da_variavel>)// Teste a variável.
{
case 1: // Caso o valor da variável seja 1
    <Código da condição>
    break// Final do case, quando o break é executado o programa finaliza o switch.
default// Código caso nenhum case tenha sido verdadeiro
    <Código da condição caso nenhum dos cases acima seja verdadeiro>
    break// Final do switch
}

Abaixo temos um exemplo de código de switch:
int variavelTestada = 1;
switch (variavelTestada)
{
case 1:
    Console.WriteLine("Caso variavelTestada seja 1");
    break;
case 2:
    Console.WriteLine("Caso variavelTestada seja 2");
    break;
default:
    Console.WriteLine("Caso variavelTestada não seja nem 1, nem 2");
    break;
}
No código acima, a condição a ser executada será o código dentro do case 1, já que o valor da variável variavelTestada é 1.
Este código só executaria o default, caso a variável variavelTestada não seja nem 1, nem 2.
Lembrando que toda vez que colocarmos qualquer código dentro do case, deveremos  inserir o comando break para demarcar o final daquele bloco de código.
switch (variavelTestada)
{
    // Este switch causará um erro.
    case 1:
        Console.WriteLine("Caso variavelTestada seja 1...");
        // Faltou adicionar o break aqui.
    case 2:
        Console.WriteLine("... e/ou Caso variavelTestada seja 2");
        break;
}
O caso acima não executa, pois o bloco do case 1 não tem uma marcação de finalização, faltou inserir o break.
Existe a possibilidade de fazermos um teste em uma variável caso ela tenha mais de um valor, como mostrado abaixo:
        int n = 2;
        switch(n) 
        {
            case 1:
            case 2: 
            case 3: 
                Console.WriteLine("Caso n seja 1, 2 ou 3.");
                break; 
            default: 
                Console.WriteLine("Caso n seja diferente de 1,2 ou 3.");
                break; 
        }


Como não há nenhuma linha de código entre os cases, o código executará caso o valor de n seja 1, 2 ou 3.

Exercícios:

  1. Construa um programa que receba o nome do usuário, o seu genero (M para masculino e F para Feminino) e a sua idade. Este programa deverá cumprimentar o usuário da seguinte forma. Para idade entre 0 e 3 anos, olá bebê, entre 4 e 8 anos olá criança, entre 9 e 12 olá garoto(a), entre 13 e 18 olá moça(o), entre 19 e 40 srta/rapaz, entre 40 e 60 sr(a) e finalmente maior que 61 anciã(ão).
  2. Faça um programa que receba o nome e o salário do usuário e aplique o dissídio conforme tabela do Sindiesp 2013, os valores do dissídio são:
    1. Para salários de até 2000,00, o reajuste será de 7,68%
    2. Para salários entre 2000,01 e 5000,00 será de 7,16%
    3. Para salários entre 5000,01 e 20000,00 será de 6,66%
    4. Para salários acima de 20000,01 o reajuste será fixo de 1000,00.
  3. Em 2013 o Governo Federal declarou como meta da inflação o valor de 4,5% com uma taxa de erro de 2% para cima ou para baixo, portanto a meta de inflação será entre 2,5% e 6,5%. Faça um programa que receba a taxa de inflação do ano, e determine se ela ficou exatamente na meta, se ela ficou dentro da faixa de erro mas abaixo da meta, se ela ficou acima da meta mas dentro da faixa de erro, se ela ficou fora da meta para baixo ou se ela ficou fora da meta para cima.

Apresentação

quarta-feira, 21 de agosto de 2013

Estrutura Sequencial e Comandos de Atribuição

 Estrutura Sequencial

Depois de termos visto variáveis e os princípios do C# vamos explicar alguns conceitos de programação.
As operações no C# seguem uma sequência de prioridade de execução, esta sequência segue a seguinte prioridade, da maior pra menor:
  • Funções pré definidas (Math.Pi, Math.Sqrt, ...)
  • Parenteses, do interno para o externo ( 2 (1) 2 )
  • ++x, --x, +x e  -x
  • *, / e %
  • + e -
  • =, *=, /=, %=, += e -=
  • x++ e x--
Onde x é mostrada como exemplo para o posicionamento dos operadores unários.
++x e x++ adiciona um ao valor de x
--x e x-- subtrai um do valor de x

Toda vez que declaramos uma variável, antes de usá-la devemos atribuir um valor a ela:
int numero;
Console.WriteLine(numero);
No código mostrado acima existe um erro de compilação, como não definimos um valor para a variável numero, não é possível usarmos ela, para corrigir este tipo de código podemos fazer como mostrado abaixo:
int numero =10;
Console.WriteLine(numero);
Como na primeira linha do código agora atribuímos um valor (10) a variável número agora podemos usar ela sem problemas.

Dica: Uma das coisas mais importantes a se pensar quando estamos desenvolvendo um software é na usabilidade. Quanto mais informações você dá para o usuário, melhor.
Exemplo de código com pouca usabilidade:
Console.WriteLine("Multiplicação");
double a = Convert.ToDouble(Console.ReadLine());
double b = Convert.ToDouble(Console.ReadLine());
 Console.WriteLine(a*b);
Qual é o resultado de executarmos o código acima?

Multiplicação:
3                  
5                  
15                   
 
Toda vez que você estiver fazendo um código, tente pensar com a cabeça de um usuário, imagina você como usuário, vendo uma tela preta com um texto branco, escrito: Multiplicação
Isso faz com que você pense que deve digitar dois números e que eles serão multiplicados e finalmente que o resultado será exposto na linha de baixo?
Certamente não, quanto melhor você informar o usuário do que você está fazendo e o que ele deve fazer para executar o seu programa, melhor. Veja o código refeito abaixo:
Console.WriteLine("Bem vindo ao programa de Multiplicação");
Console.WriteLine("Digite dois números para que eu lhe apresente o resultado da multiplicação entre eles.");
Console.WriteLine("Por favor, digite o primeiro número:");
double numero1 = Convert.ToDouble(Console.ReadLine());
Console.WriteLine("Por favor, digite o segundo número:");
double numero2 = Convert.ToDouble(Console.ReadLine());
double resultado = numero1*numero2;
 Console.WriteLine("O resultado da multiplicação entre {0} e {1}, é: {2}",numero1,numero2,resultado);
 Vejamos agora qual é o resultado da execução do código acima:
Bem vindo ao programa de Multiplicação                                                  
Digite dois números para que eu lhe apresente o resultado da multiplicação entre eles.Por favor, digite o primeiro número:                                            
 3                                                                                                                
Por favor, digite o segundo número:                                                            
 5                                                                                                                  
O resultado da multiplicação entre 3 e 5, é: 15                                              
Bom, agora sim ficou bem claro o que o usuário deveria fazer e qual seria o resultado deste programa, tente sempre lembrar disto quando estiver fazendo um novo programa.

Conversão de valores:

Existe uma classe em c# que se chama Convert ela é usada para converter valores entre um tipo e outro, abaixo segue uma tabela dos métodos da classe Convert que são usados para converter valores:

Convert.ToBoolean() bool Convert.ToInt64() long
Convert.ToByte() byte Convert.ToSByte() sbyte
Convert.ToChar() char Convert.ToSingle() float
Convert.ToDecimal() decimal Convert.ToString() string
Convert.ToDouble() double Convert.ToUInt16() ushort
Convert.ToInt16() short Convert.ToUInt32() uint
Convert.ToInt32() int Convert.ToUInt64() ulong

Cada um dos métodos da classe Convert, executa a conversão para o tipo de variável declarada, por exemplo o ToBoolean converte qualquer tipo de variável para booleano, lembrando que por exemplo, ao usar uma string, se você passar um valor inválido de booleano, este método dispara uma exceção do tipo FormatException, o que indica um erro de execução do programa.

Funções matemáticas:

Na tabela abaixo mostramos as funções matemáticas disponíveis na classe Math

Nome do método

Descrição do Método

AbsValor absoluto de um número
CosValor do Cosseno
SinValor do Seno
TanValor da Tangente
ExpValor de e elevado ao expoente passado como parâmetro
RoundArredonda o valor do ponto flutuante
PowEleva o primeiro parâmetro a potência do segundo parâmetro
SqrtRaiz quadrada

Por exemplo para calcularmos a raiz quadrada de dois devemos fazer:
Math.Sqrt(2);
Para elevar 3 ao quadrado fazemos
Math.Pow(3,2); 

Exercícios:

1) Crie um programa que calcule a raiz quadrada de um valor passado pelo usuário.
2) Crie um programa que calcule um número elevado a potência fornecida pelo usuário.
3) Crie um programa que receba um valor numérico do usuário e converta ele para long.
4) Crie um programa que receba dois lados de um triângulo e calcule o terceiro lado usando o teorema de pitágoras.
5) A fórmula do cálculo da diagonal do quadrado é:
               d =\sqrt{2\,l^2}=l \sqrt{2}.
onde d é a diagonal do quadrado, e l é o lado do quadrado. Faça um programa que receba o valor do lado de um quadrado e calcule qual é o tamanho da diagonal do quadrado.
6)Sabendo que um carro popular, após um ano de uso é, 9,45%, que o valor médio do seguro deste carro é R$ 2.583,83,  o preço dele é R$ 21.415,00 e o IPVA do carro é 3% ao ano, calcule qual será o valor do carro após um ano de uso, inclua no cálculo os gastos com seguro e ipva para determinar qual será o valor real de venda do veículo após um ano de uso.

Referências:

sexta-feira, 16 de agosto de 2013

Conceito de Variável em C#

Conceito de variável

Em programação variável é um objeto ou um espaço na memória onde podemos armazenar um valor. Uma variável só existe em tempo de execução, ou seja, quando o programa está sendo executado, elas são associadas a nomes. Ao nomear uma variável devemos sempre ser o mais descritivos possível.
As variáveis são definidas por tipos, existem os tipos textuais, os tipos inteiros, os tipos de ponto flutuante que serão descritos na tabela abaixo:

Tipo C#

Valores possíveis

Tamanho na memória

Valor padrão

bool true (verdadeiro) ou false (falso) 1 bit false
byte 0 a 255 1 byte false
sbyte -128 a 127 1 byte false
char um caractere 2 bytes '\0'
decimal Valores decimais com 128 bits de precisão, 28~29 digitos significantes (-7,9 x 1028 a 7,9 x 1028) / 100 to 28 0.0M
double Valores decimais com 64 bits de precisão (+/-)5,0 x 10-324 a (+/-)1,7 x 10308 0.0D
float Valores decimais com 32 bits -3,4 x 1038 a + 3,4 x 1038 0.0F
int Inteiro com 32 bits -2.147.483.648 a 2.147.483.647 0
long Inteiro com 64 bits -923.372.036.854.775.808 a 9.223.372.036.854.775.807 0L
sbyte Inteiro de 8 bits -128 a 127 0
short Inteiro de 16 bits -32.768 a 32.767 0
uint Inteiro positivo de 32 bits 0 a 4.294.967.295 0
ulong Inteiro positivo 64 bits 0 a 18.446.744.073.709.551.615 0
ushort Inteiro positivo 16 bits 0 a 65.535 0
string Conjunto de caracteres, sendo 16 bits por caractere texto tamanho ilimitado ""

Quando criamos, ou declaramos, uma variável estamos reservando um espaço na memória para armazenar aquele valor. Por exemplo ao declarar uma variável do tipo long, estamos reservando 64 bits de memoria para esta variável.
Cada tipo de variável possui um determinado tamanho e a capacidade de armazenar uma certa quantidade de dados, conforme mostrado na tabela acima.
Um ponto importante e explicar qual e a diferenca entre o decimal, o double e o float. O double e o float são números binários de ponto flutuante, ou seja, eles representam um número desta forma:
100101,10101100
Já o decimal é um número decimal de ponto flutuante, ou seja eles representam um número desta forma:
1234,56
O importante de tudo isso é que nós estamos acostumados a representar números decimais da mesma forma que o decimal faz, e nós sempre esperamos ter o resultado exato deste número. Quando isso é feito por uma representação binária, por exemplo o 0,1 usando uma representação binária, nós teremos um valor aproximado de 0,1.
Portanto ao usar double e float nós temos uma aproximação do valor, já com decimal este valor sempre será exato.
Quando usar um e quando usar outro? Bom o exemplo mais comum que temos de uso do decimal são valores monetários, ao depositar 10,20 na sua conta do banco, você espera sempre ter este valor exatamente assim depositado em sua conta, sem arredondamentos.
Já o float e o decimal podem ser usados para cálculos de média, dados científicos, etc.

Operadores matemáticos:

Tipo do Operador

Como usar

Descrição

Multiplicador e divisão x * y
x / y
x % y
* define a multiplicação,
/ define a divisão
e % define o resto da divisão
Soma e subtração x + y
x - y
+ define a adição
- define a subtração
Shift x << y
x >> y
<< define um deslocamento binario a esquerda
>> define um deslocamento binário a direita

Todos os operadores mostrados na tabela acima estão em ordem de execução, portando o * é o operador que tem a máxima prioridade, se tivermos a seguinte expressão:

int valor = 1+ 2 * 3 
O resultado desta operação seria 7, já que * tem precedência ao + a operação que será realizada seria:
int valor = 1 + (2 * 3)
valor = 1 + 6
valor = 7
A precedencia dos operadores define quem é executado primeiro, e esta ordem se dá de cima para baixo na tabela mostrada acima.
Tirando os operadores matemáticos básicos, o que temos de novo aqui são os operadores de shift, que deslocam um bit pra esquerda ou pra direita. Na operação de deslocamento pra esquerda acontece uma multiplicação do valor da esquerda por 2 elevado a n, onde n é o valor que está a direita:
1 << 1   = 1 * 2 ^1 -> 1 * 2 = 2
res0: Int = 2
1 << 2  = 1 * 2 ^2 -> 1 * 4 = 4
res1: Int = 4
1 << 3 = 1 * 2 ^3 -> 1 * 8 = 8
res2: Int = 8
2 << 1 = 2 * 2 ^1 -> 2 * 2 = 4
res3: Int = 4
2 << 2 = 2 * 2 ^2 -> 2 * 4 = 8
res4: Int = 8
2 << 3 = 2 * 2 ^3 -> 2 * 8 = 16
res5: Int = 16
2 << 4 = 2 * 2 ^1 -> 2 * 2 = 4
res6: Int = 32
Já na operação de deslocamento pra direita acontece uma divisão do valor da esquerda por 2 elevado a n, onde n é o valor que está a direita:
scala> 16 >> 2 = 16 / 2 ^2 -> 16 / 4 =4
res22: Int = 4
scala> 16 >> 1  = 16 / 2 ^1 -> 16 / 2 =8
res23: Int = 8

Referências:

Apresentação 

sexta-feira, 9 de agosto de 2013

Princípios de programação com C#

Apresentação do C#

O que é C#?

C# é uma linguagem de programação Orientada o Objetos, fortemente tipada, robusta e multiplataforma que foi desenvolvida como parte do pacote .Net da Microsoft. Sua sintaxe foi baseada no C++ mas inclui também influencias de outras linguagens como Object Pascal e Java.
A criação da linguagem C# é atribuída a Anders Hejlsberg, que trabalhou como arquiteto na Borland nos projetos Turbo Pascal e Delphi.
A Microsoft submeteu o C# a entidade ECMA para uma padronização formal, que liberou esta especificação em Dezembro de 2001, em 2003 o C# tornou-se padrão ISO e existem algumas implementações em desenvolvimento como o Mono, o dotGNU, o Portable.NET e o BDS.
O C# é uma linguagem de programação visual dirigida por eventos e totalmente orientada a objetos, que permite intercâmbio entre linguagens. Com ela é possível interagir pela internet usando os padrões SOAP e XML.
Esta linguagem foi construída adaptando os melhores recursos disponíveis nas linguagens C, C++ e Java. Ela possui recursos como objetos, strings, componentes gráficos, tratamento de exceções, programação concorrente, multimídia, processamento de arquivos, banco de dados, redes e computação distribuída.

Visual Studio 

O Visual Studio é a ferramenta desenvolvida pela Microsoft para desenvolvermos o código do C#. Para baixar o Visual Studio vá até a página da microsoft para fazer o download  dos softwares necessários para programar em C#.
Lá você encontra todas as versões do Visual Studio disponíveis para baixar.
Aqui e aqui você encontra mais informações de como, sendo estudante, você pode conseguir acesso ao msdn  site da microsoft que possui todos os produtos dela disponíveis para download.
Para instalar o Visual Studio é só seguir os passos do instalador.
Após a instalação, o primeiro passo será criar um projeto, conforme mostrado na figura 1 abaixo

Figura 1 - Criando projeto.
 Ao clicar em novo projeto, aparecerá uma janela com as opções dos projetos disponíveis. Nós vamos trabalhar com projetos do tipo console application, que pode ser criados conforme mostrado na figura 2 abaixo.
Figura 2 - Criando um projeto do tipo Console application
 Ao criar um projeto do tipo console application, ele criará um programa básico, conforme mostrado abaixo na figura 3.
Figura 3 - Programa básico de um projeto console application.
A class Program define o nome do nosso primeiro programa, static void Main é o método que será executado. Cada { indica um início de escopo de código, toda linha deve ser terminada com ;
Esta imagem não mostra é a definição do namespace, namespace define um escopo de código que pode conter várias classes.
Alguns exemplos de código em C# podem ser encontrados aqui
Sites como o Submarino e muitas grandes empresas usam o C# para desenvolver seus produtos. Atualmente C# e Java polarizam o mercado de desenvolvimento no Brasil e somados ocupam quase que 80% das vagas disponíveis.