Arquivo da categoria ‘C#’

Arrays – Java, C++ e C#

Publicado: 1 de fevereiro de 2014 em C#, C/C++, Java

Uma Array também conhecido como matriz é uma lista seqüencial de itens. O tipo de item que você pode armazenar na matriz são definidas pelo tipo de matriz na declaração. Arrays podem ser simples ou multi-dimensional, e cada dimensão pode ter diferentes comprimentos.

No exemplo a seguir complementando o post anterior sobre looping usaremos aqui o comando Continue. este comando força transferência de controle para a proxima expressão, ou seja continua a execução do looping ignorando o ponteiro atual usado nos comandos: do, for e while.

Imagine o seguinte cenário:

Em uma maratona temos 16 corredores homens e mulheres cada um com uma pulseira que envia um sinal para uma rede sem fio e ao cruzar a linha de chegada e automaticamente nos é dados nome e o tempo dos corredores o que fazemos é identificar nos dados quem fez o primeiro e segundo lugar:

Java

public class Looping {

public static void main(String[] args)

 {

      String[] nomes ={     "Elena", "Tomas", "amilton", "Susie", "Felipe", "Mateus", "Alex",     "Fabia", "Joao", "James", "Jane", "Emilia", "Daniel", "Leda",     "Ariana", "Kate"     };

        int[] tempos ={     341, 273, 278, 329, 445, 402, 388, 275, 243, 334, 412, 393, 299,     343, 317, 265     };

          int primeiro = 0;

     int segundo = 0;

     String ganhador = null ;

     String vice = null ;

               for (int i = 0; i < nomes.length; i++)

{

System.out.println(nomes[i]+ ":       " + tempos[i]);

                  if (tempos[i] > primeiro) {primeiro = tempos[i];

                                ganhador = nomes[i];

                               }

}

           System.out.println("Primeiro lugar: "+ ganhador + " com segundos: " + primeiro);

          for (int i = 0; i < nomes.length; i++)

{

if (tempos[i] == primeiro) {continue;}

if (tempos[i] > segundo) {segundo = tempos[i];

                                vice = nomes[i];

                               }

}

               System.out.println("Segundo lugar: "+ vice + " com segundos: " + segundo);   }

}

C++

#include "stdafx.h"

 #include <iostream>

 #include <string>

using namespace std;

int _tmain(int argc, _TCHAR* argv[])

{

const int itens = 16;

    string nomes[itens] = {   "Elena", "Tomas", "amilton", "Susie", "Felipe", "Mateus", "Alex",   "Fabia", "Joao", "James", "Jane", "Emilia", "Daniel", "Leda",   "Ariana", "Kate"  };

int tempos[itens] = {   341, 273, 278, 329, 445, 402, 388, 275, 243, 334, 412, 393, 299,   343, 317, 265  };

int primeiro = 0;

int segundo = 0;

string ganhador = "";

string vice = "";

for (int i = 0; i < itens ; i++)  {   cout <<  nomes[i] << ":         " << tempos[i] <<"\n";

if (tempos[i] > primeiro) {    primeiro = tempos[i];

    ganhador = nomes[i];

   }

  }

       cout  << "\nPrimeiro lugar: " << ganhador << " com segundos: " << primeiro << "\n";

for (int i = 0; i < itens; i++)

  {

if (tempos[i] == primeiro) { continue; }

   if (tempos[i] > segundo) {    segundo = tempos[i];    vice = nomes[i];   }

}

cout << "Segundo lugar: " << vice << " com segundos: " << segundo<< "\n\n";

  system("pause");

return 0;

}

C#

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

namespace ConsoleApplication33

{

class Program

{

static void Main(string[] args)

{

String[] nomes ={     "Elena", "Tomas", "amilton", "Susie", "Felipe", "Mateus", "Alex",     "Fabia", "Joao", "James", "Jane", "Emilia", "Daniel", "Leda",     "Ariana", "Kate"     };

int[] tempos ={     341, 273, 278, 329, 445, 402, 388, 275, 243, 334, 412, 393, 299,     343, 317, 265     };

int primeiro = 0;

int segundo = 0;

String ganhador = null ;

String vice = null ;

for (int i = 0; i < nomes.Length; i++)

{

Console.WriteLine(nomes[i]+ ":         " + tempos[i]);
                  if (tempos[i] > primeiro) {primeiro = tempos[i];
                                ganhador = nomes[i];

}

}

Console.WriteLine("Primeiro lugar: "+ ganhador + " com segundos: " + primeiro);

for (int i = 0; i < nomes.Length; i++)

{

if (tempos[i] == primeiro) {continue;}

if (tempos[i] > segundo) {segundo = tempos[i];

vice = nomes[i];

}

}

Console.WriteLine("Segundo lugar: " + vice + " com segundos: " + segundo);

Console.ReadKey();

}

}

}

Exercicios: Mostrar o tempo do terceiro ganhador e customizar o código fonte para que fique mais compacto.

Comando Do … While e Break – Java, C++, C#

Publicado: 1 de fevereiro de 2014 em C#, C/C++, Java

O comando Do While (faça… enquanto) executa um comando repetidamente até que a condição de término especificada retorne falso.

A instrução break termina a execução do laço mais próximo em que ela aparece.

A diferença entre o comando While visto no post anterior e o comando  Do…While é que neste a instrução ou  bloco  de instruções é executado uma vez, veja o exemplo abaixo:

No exemplo abaixo você pode ver que o Do While executa uma vez independe da condição falsa:

// Exemplo comando while
while (false)
{
printf("While imprime \n"); // C++
// System.out.println("While imprime"); // Java
// Console.WriteLine("While imprime"); // C#
}

// Exemplo de comando do while
do
{
printf("Do While iprime \n");
  // System.out.println("Do While imprime"); // Java
// Console.WriteLine(Do "While imprime"); // C#
}
while (false);

A seguir temos os resultados do exercício anterior.

Exibindo numero primos:

Java

import java.io.Console;
import java.util.*;

public class Cad {

public static void main(String[] args)

{

int  Nprimo = 2;
int  numeros = 1;
do
{
for (Nprimo = 2; Nprimo <= numeros - 1; Nprimo++)
{
if ((numeros % Nprimo) == 0)
{
break; // pula numeros nao primos
}
}
if (Nprimo == numeros)
System.out.print(numeros +  ", ");
numeros = numeros + 1;
} while (numeros <= 1000);

}
}

C++

// ConsoleApplication29.cpp : Defines the entry point for the console application. //

#include "stdafx.h"

#include <iostream>

using namespace std;

int main(void)

{

int  Nprimo = 2;

int  numeros = 1;

do  {   for (Nprimo = 2; Nprimo <= numeros - 1; Nprimo++)

{    if ((numeros % Nprimo) == 0)

{

break; // pula numeros nao primos

}

}

if (Nprimo == numeros)    cout << numeros << ", ";

numeros = numeros + 1;

}

while (numeros <= 1000);

cout << "\n";

system("PAUSE");

return 0;

}

C#


using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

namespace ConsoleApplication27

{

class Program

{

static void Main(string[] args)

{

int Nprimo = 2;

int numeros = 1;

do

{

for (Nprimo = 2; Nprimo <= numeros - 1; Nprimo++)

{

if ((numeros % Nprimo) == 0)

{

break; // pula numeros nao primos

}

}

if (Nprimo == numeros)

Console.Write (Convert.ToString(numeros) + ", ");

numeros = numeros + 1;

} while (numeros <= 1000);

Console.ReadKey();

}

}

}

Comando While – Java, C++ e C#

Publicado: 1 de fevereiro de 2014 em C#, C/C++, Java

O comando while executa uma instrução ou um bloco de instruções até que uma expressão especificada seja avaliada como falsa.

No exemplo a seguir vamos criar uma lista de números pares e outra com números impares:

Java


import java.io.Console;
import java.util.*;

public class Cad {

public static void main(String[] args)

{

int Npar = 0;
int Nimpar =1;
while (Npar < 100)
{
System.out.println("Numeros pares: "+ Npar + " Numeros impares: " + Nimpar);
Npar = Npar + 2; // exclua esta linha para ver um looping infinito
Nimpar = Nimpar +2;
}
}
}

C++


#include "stdafx.h"

#include <iostream>

using namespace std;

int _tmain(int argc, _TCHAR* argv[])

{

int Npar = 0;

int Nimpar = 1;

while (Npar < 100)

{

cout << "Numeros pares: " << Npar<< " numeros impares: "<<Nimpar << "\n";

Npar = Npar + 2; //exclua esta linha para um looping infinito

Nimpar = Nimpar + 2;

}

system("pause");

return 0;

}

C#


using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

namespace ConsoleApplication27

{

class Program

{

static void Main(string[] args)

{

int Npar = 0;

int Nimpar = 1;

while (Npar < 100)

{

Console.WriteLine("Numeros pares:" + Convert.ToString(Npar) +

" numeros impares: " + Convert.ToString(Nimpar));

Npar = Npar + 2; // exclua esta linha para ver um looping infinito

Nimpar = Nimpar +2;

}

Console.ReadKey();

}

}

}

Exercício:

Criar um lista de números primos menores do que 1000:

Lembrando que números primos são os números naturais que têm apenas dois divisores diferentes: o 1(um) e ele mesmo.

O resultado de ver ser uma lista numérica entre 2 e 997.

 

Comando FOR – Java, C++ e C#

Publicado: 30 de janeiro de 2014 em C#, C/C++, Java

Executa a declaração e expressão de laço repetidamente, até que a condição da expressão se torne falsa.

O FOR possui 3 parâmetros nem todos obrigatórios e escritos pela seguinte sintaxe:

FOR (parâmetro 1; parâmetro 2; parametro3)  {  conteúdo do laço; }

Sendo que:

Parâmetro1 = inicialização do laço, exemplo: int variável = 0;

Parâmetro2 = condição do laço, exemplo: variável < 100;

Parâmetro3 = incremento ou decremento do laço, exemplo: variável++; ou variável–;

Um erro muito comum é escrever comandos da categoria laços com uma condição infinita, um laço interminável não permite que o compilador termine o conteúdo do comando.

No exemplo a seguir vamos criar uma simples tabuada:

Java

import java.io.Console;
import java.util.*;

public class Cad {

public static void main(String[] args)

{

int numeros = 0;
for  (numeros=1; numeros<=10; numeros++)
{
System.out.println("Tabuada: 1 x "+ numeros + " = " + 1*numeros);
}
}
}

C++

#include "stdafx.h"
#include <iostream>

using namespace std;

int _tmain(int argc, _TCHAR* argv[])

{

int numeros = 0;

for (numeros = 1; numeros <= 10; numeros++)

{

cout << "Tabuada: 1 x " << numeros << " = " << 1 * numeros << "\n";

}

cout << "\n";

system("pause");

return 0; }

C#


using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

namespace ConsoleApplication25 {

class Program

{

static void Main(string[] args)

{

int numeros = 0;

for (numeros =1; numeros <=10; numeros++)

{

Console.WriteLine("Tabauda: 1 x " + Convert.ToString(numeros)+ " = " +

Convert.ToString(numeros *1));

}

Console.ReadKey();

}

}

}

Exercício use o for para imprimir no console os seguintes desenhos usando o caractere “*”:

Desenho 1:
***********
**********
*********
********
*******
******
*****
****
***
**
*

Desenho 2:
*****
****
***
**
*
*
**
***
****
*****
Procure outros desenhos e saiba mais sobre ASCII art em:
http://pt.wikipedia.org/wiki/ASCII_art

Condição IF e ELSE – C#

Publicado: 29 de janeiro de 2014 em C#

IF é um dos comandos mais comuns e um dos mais importantes na programação, este comando é responsável pelas tomadas de decisões, existe praticamente em todas as linguagens, antigamente este comando era conhecido como “se-então-senão” ou “if-then-else” mas as linguagens mais modernas substituirão o “então” pelo símbolo “{}” (colchetes), se a condição puder ser executada por apenas uma linha de comando então não é necessário usar o colchete.

Imagine o seguinte cenário: um de nossos colaboradores está autorizado a fazer um tipo de empréstimos na folha de pagamento, mas o empréstimo é habilitado apenas se o ganho mensal não ultrapassar R$ 1000,00.

Assim devemos verificar o valor do salario e exibir uma mensagem referente ao empréstimo.

C#

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

namespace ConsoleApplication23 {

class Program

{

static void Main(string[] args)

{

int codigo = 461012;

String nome = "Mario Pereira Araujo";

Boolean ativo = true;

Double salario = 1556;

Console.WriteLine("Este e um int-> " + Convert.ToString(codigo));

Console.WriteLine("Este e um string-> " + Convert.ToString(nome));

Console.WriteLine("Este e um boolean-> " + Convert.ToString(ativo));

Console.WriteLine("Este e um double-> " + Convert.ToString(salario));

Console.WriteLine("");

Console.WriteLine("Digite o valor do desconto : ");

String desconto = Console.ReadLine();

salario = salario - Convert.ToDouble(desconto);

Console.WriteLine("Valor do salario liquido " + Convert.ToString(salario));

if (salario >= 1000)

{  Console.WriteLine(nome+": emprestimo desabilitado"); }

else

{  Console.WriteLine(nome+": emprestimo habilitado"); }

Console.ReadKey();

}

}

}

Executar comandos Shell em C#

Publicado: 28 de janeiro de 2014 em C#

O C# permite executar uma linha de comando usando o namespace  System.Diagnostics que contêm tipos que permitem interagir com processos do sistema, logs de eventos e medidores de desempenho. Os namespaces filho contêm tipos para interagir com ferramentas de análise de código, oferecer suporte a contratos, estender o suporte em tempo de design para a instrumentação e monitoramento de aplicativos, registrar dados de eventos usando o subsistema Rastreamento de Eventos para Windows (ETW), ler e gravar logs de evento, coletar dados de desempenho e ler e gravar informações de símbolos de depuração.

O Método Process.Start (String) inicia um recurso do processo especificando o nome de um documento ou um arquivo de aplicativo e associa o recurso com um novo componente de Process.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication1{ 
  
class Program { 

    static void Main(string[] args) {

          System.Diagnostics.Process.Start(@"C:\\Windows\\notepad.exe");
          // ou System.Diagnostics.Process.Start("Shutdown", "-f -s");
    }
  }
}

Comando de Entrada C#

Publicado: 28 de janeiro de 2014 em C#

Seguindo nosso exemplo anterior vamos criar um desconto no salario de nosso colaborador, para isto precisamos perguntar ao usuário qual o valor de desconto desejado.

Usaremos o comando ReadLine e o comando Convert para converter variáveis:

class Program

{

static void Main(string[] args)

{

int codigo = 461012;

String nome = "Mario Pereira Araujo";

Boolean ativo = true;

Double salario = 1556;

Console.WriteLine("Este e um int-> " + Convert.ToString(codigo));

Console.WriteLine("Este e um string-> " + Convert.ToString(nome));

Console.WriteLine("Este e um boolean-> " + Convert.ToString(ativo));

Console.WriteLine("Este e um double-> " + Convert.ToString(salario));

Console.WriteLine("");

Console.WriteLine("Digite o valor do desconto : ");



String desconto = Console.ReadLine();

salario = salario - Convert.ToDouble(desconto);

Console.WriteLine("Valor do salario liquido " + Convert.ToString(salario));

Console.ReadKey();

}

}

Lista de Operadores C#

Publicado: 27 de janeiro de 2014 em C#

Operadores C#

  • + (Adição)
  • – (Subtração)
  • * (Multiplicação)
  • / (Divisão)
  • % (Resto/Módulo)
  • = (Atribuição simples)
  • += (Atribuição aditiva)
  • -= (Atribuição Subtrativa)
  • *= (Atribuição Multiplicativa)
  • /=   (Atribuição de divisão)
  • %= (Atribuição de módulo)
  • == (Igualdade)
  • > (Maior)
  • < (Menor)
  • <= (Menor igual)
  • >= (Maior igual)
  • != (Diferente)

Mais informações sobre operadores C#:

http://msdn.microsoft.com/pt-br/library/6a71f45d.aspx

Em C++ e Java podemos usar conversores e flags para formatar mensagens, já o C# não utiliza estes conversores então vamos criar métodos override para simular este recurso, para C# veja Composite Formatting logo abaixo. Visto que veremos o conceito de métodos mais adiante.

Tabela de Conversores C++

%d int mostra um número inteiro
%c char mostra um caracter
%f float ou double mostra um número decimal
%i int mostra um número inteiro
%ld long int mostra um número inteiro longo
%e float ou double mostra um número exponencial (número científico)
%E float ou double mostra um número exponencial (número científico)
%o int mostra um número inteiro em formato octal
%x int mostra um número inteiro em formato hexadecimal
%X int mostra um número inteiro em formato hexadecimal
%s char mostra uma cadeia de caracteres (string)

%n pula uma linha

%b boolean somente para JAVA, pois o C++ não retorna true or false e sim zero(0) e um(1) assim podemos utilizar %d.

Para C# veja:

Composite Format String: http://msdn.microsoft.com/en-us/library/txafckwd(v=vs.110).aspx

Exemplo:

Vamos utilizar o exemplo de código que usamos no post sobre “variáveis” para as linguagens respectivas

JAVA


public class Cad {

public static void main(String[] args) {

int codigo = 461012;

String nome = "Mario Pereira Araujo";

Boolean ativo = true;

Double salario = 1.556;

System.out.format("O Conteudo de codigo é: %d%n", codigo);

System.out.format("O Conteudo de nome é: %s%n", nome);

System.out.format("O Conteudo de ativo é: %b%n", ativo);

System.out.format("O Conteudo de ativo é: %4.3f%n", salario);

}

}

C++


#include "stdafx.h"

#include <iostream>   // habilita I/O entrrada e saída neste caso habilita o cout

#include <string> // habilita a manipulação de strings usado no comando cout

 using namespace std;

int _tmain(int argc, _TCHAR* argv[])

{

int codigo = 461012;

char* nome = "Mario Pereira Araujo";

bool ativo = false;

double salario = 1.556;

printf ("Este e um int\t-> %d\n", codigo);

printf ("Este e um char\t-> %s\n", nome);

printf ("Este e um float\t-> %d\n", ativo);

printf("Este e um float\t-> %4.3f\n", salario);

system("pause");

return 0;

}

C#


using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

namespace ConsoleApplication1 {


class Program     {

         // Métodos Override sobreposição do método com a mesma entrada porem diferentes tipos
         // Simulamos deste modo linguagens como C++, Java, Python entre outras
         // C# possui seu próprio método para esta funcionalidade chamada Composite format string

         static void printf(string entrada, string conteudo)
         {
             string resultado = entrada.Replace("%s", conteudo);
             Console.WriteLine(resultado);
         }

        static void printf(string entrada, double conteudo)
        {
            string resultado = entrada.Replace("%f", Convert.ToString(conteudo));
            Console.WriteLine(resultado);
        }

        static void printf(string entrada, int conteudo)
        {
            string resultado = entrada.Replace("%d", Convert.ToString(conteudo));
            Console.WriteLine(resultado);
        }

        static void printf(string entrada, Boolean conteudo)
        {
            string resultado = entrada.Replace("%b", Convert.ToString(conteudo));
            Console.WriteLine(resultado);
        }

// void principal
static void Main(string[] args)
{

int codigo = 461012;

String nome = "Mario Pereira Araujo";

Boolean ativo = true;

Double salario = 1.556;

// Simula keyword C++

printf("Este e um int-> %d", codigo);

printf("Este e um string-> %s", nome);

printf("Este e um boolean-> %b", ativo);

printf("Este e um double-> %f", salario);

Console.ReadKey();

}

}

}

Tipos de Variaveis Java e C#

Publicado: 26 de janeiro de 2014 em C#, Java

Tipos (Types)

O que precisamos saber antes de estudar Tipos?

Precisamos conhecer o significado do termo “variável”  na área da computação.

O que é uma variável?

Na programação, uma variável é um objeto (uma posição, frequentemente localizada na memória) capaz de reter e representar um valor ou expressão. Enquanto as variáveis só “existem” em tempo de execução, elas são associadas a “nomes”, chamados identificadores, durante o tempo de desenvolvimento.

Quando nos referimos à variável, do ponto de vista da programação de computadores, estamos tratando de uma “região de memória (do computador) previamente identificada cuja finalidade é armazenar os dados ou informações de um programa por um determinado espaço de tempo”. A memória do computador se organiza tal qual um armário com várias divisões. Sendo cada divisão identificada por um endereço diferente em uma linguagem que o computador entende.

O computador armazena os dados nessas divisões, sendo que em cada divisão só é possível armazenar um dado e toda vez que o computador armazenar um dado em uma dessas divisões, o dado que antes estava armazenado é eliminado. O conteúdo pode ser alterado, mas somente um dado por vez pode ser armazenado naquela divisão.

O computador identifica cada divisão por intermédio de um endereço no formato hexadecimal, e as linguagens de programação permitem nomear cada endereço ou posição de memória, facilitando a referência a um endereço de memória. Uma variável é composta por dois elementos básicos: o conteúdo, o valor da variável e identificador, um nome dado à variável para possibilitar sua utilização

O que são Tipos?

São diferentes espécies de  valores que podem ser armazenados e manipulados em uma variável.

Quais são os principais tipos?

boolean: valor de verdade (verdadeiro ou falso).

int: Inteiro (0, 1, -47).

double: número Real (3,14, 1,0, -2,1).

String: Texto (“Olá”, “exemplo”).

Em java e C# e também algumas outras linguagens de programação podemos ter tipos que coincidem como é o caso do exemplo abaixo:

JAVA


public class Cad {

public static void main(String[] args) {

// TODO Auto-generated method stub

int codigo = 10;

String nome = "João da Silva";

Boolean ativo = true;

Double salario = 1.556;

System.out.println("Codigo:" + codigo + " Nome: " +

nome  + " Ativo: " +

ativo + " Salario: " +

salario);

}

}

 

C#


using System;

class Program     {
         static void Main(string[] args)

{

int codigo = 10;

String nome = "João da Silva";

Boolean ativo = true;

Double salario = 1.556;

System.Console.WriteLine("Codigo:" + Convert.ToString(codigo) + " Nome: " +

nome  + " Ativo: " +

Convert.ToString(ativo) + " Salario: " +

Convert.ToString(salario));

Console.ReadKey();

}

}

 

Em ambos códigos você terá o mesmo resultado:
Codigo:10 Nome: João da Silva Ativo: true Salario: 1.556

Nota: Em C# nós precisamos converter os tipos de variáveis para um tipo texto para que possa ser mostrado no console.

Para isso usamos o seguinte comando:

Convert.ToString(Variável)

Este comando converte todos os diferentes tipos em um tipo String, o mesmo não acontece no código Java.

Exercício:

Amplie o exemplo dado e crie um cadastro de pessoa com dados pessoais, nome de pai e mãe e endereço completo, usando os diferentes tipos de variáveis.