C# Dificuldades

Oi… :smiley:
Eu estou fazendo um arquivo básico, de console ( pois sou iniciante em C# :roll: ) e eu preciso apresentá-lo ao meu professor.

O problema é :
Ele roda perfeitamente no meu PC, mas em qualquer outro não. :?

PS: As versões .Net são idênticas.
Eu uso o Pen-Drive para colocar os arquivos. Ainda não tentei GRAVÁ-LO no computador (preguiça :wink: :wink: :wink: )

Obrigado.

Ah, se isso ajudar , lá vai :

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Diagnostics;

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

        {


            
            

                Decimal Number1;
                Decimal Number2;
                String Opcao;
                Decimal Total;
                String Tipo;

                Console.Title = "Calculadora";               
                Console.WriteLine("Microsoft Corp.");
                Console.WriteLine("Lucas Henrique");
                Console.WriteLine("");
                Console.WriteLine("Calculadora");
                Console.WriteLine("");
                Console.WriteLine("1 - Subtração");
                Console.WriteLine("2 - Adição");
                Console.WriteLine("3 - Divisão");
                Console.WriteLine("4 - Multiplicação");
                Console.WriteLine("5 - Sair");
                Opcao = Console.ReadLine();

                if (Opcao.Equals("1"))
                {
                    Console.Clear();
                    Tipo = "subtraido";
                    Console.WriteLine(" Digite o primeiro numero a ser " + Tipo);
                    Number1 = Convert.ToDecimal(Console.ReadLine());
                    Console.WriteLine("Digite o segundo número ");
                    Number2 = Convert.ToDecimal(Console.ReadLine());
                    Console.Clear();
                    Total = Number1 - Number2;
                    Console.WriteLine(" O resultado da Subtração de " + Number1 + "- " + Number2 + " é igual a " + Total + ".");
                    Console.WriteLine("Comando Concluído");
Console.WriteLine("Aperte Qualquer tecla...");
Cosole.ReadKey();
                }


                else if (Opcao.Equals("2"))
                {
                    Console.Clear();
                    Tipo = "adcionado";
                    Console.WriteLine(" Digite o primeiro numero a ser " + Tipo);
                    Number1 = Convert.ToDecimal(Console.ReadLine());
                    Console.WriteLine("Digite o segundo número ");
                    Number2 = Convert.ToDecimal(Console.ReadLine());
                    Console.Clear();
                    Total = Number1 + Number2;
                    Console.WriteLine(" O resultado da Adção de " + Number1 + "+ " + Number2 + " é igual a " + Total + ".");
                    Console.WriteLine("Comando Concluído");
Console.WriteLine("Aperte Qualquer tecla...");
Cosole.ReadKey();


                }


                else if (Opcao.Equals("3"))
                {
                    Console.Clear();
                    Tipo = "dividido";
                    Console.WriteLine(" Digite o primeiro numero a ser  " + Tipo);
                    Number1 = Convert.ToDecimal(Console.ReadLine());
                    Console.WriteLine("Digite o segundo número ");
                    Number2 = Convert.ToDecimal(Console.ReadLine());
                    Console.Clear();
                    Total = Number1 / Number2;
                    Console.WriteLine(" O resultado da divisão de" + Number1 + "/ " + Number2 + " é igual a " + Total + ".");
                    Console.WriteLine("Comando Concluído");
Console.WriteLine("Aperte Qualquer tecla...");
Cosole.ReadKey();
                }

                else if (Opcao.Equals("4"))
                {
                    Console.Clear();
                    Tipo = "multiplicado";
                    Console.WriteLine(" Digite o primeiro numero a ser  " + Tipo);
                    Number1 = Convert.ToDecimal(Console.ReadLine());
                    Console.WriteLine("Digite o segundo número ");
                    Number2 = Convert.ToDecimal(Console.ReadLine());
                    Console.Clear();
                    Total = Number1 / Number2;
                    Console.WriteLine(" O resultado da multiplicação de " + Number1 + "* " + Number2 + " é igual a " + Total + ".");
                    Console.WriteLine("Comando Concluído");
Console.WriteLine("Aperte Qualquer tecla...");
Cosole.ReadKey();
                }

            
        }
    }


}

Ah , e gente, preciso de ajuda para empregar o DO E O WHILE nesse meio, pois se o usuário, depois de ter sua conta quiser fazer outra o leve para o início.

Obrigado! :smiley: :smiley: :smiley:

Obrigado.

do{
                          
                Console.WriteLine("Microsoft Corp.");
                Console.WriteLine("Lucas Henrique");
                Console.WriteLine("");
                Console.WriteLine("Calculadora");
                Console.WriteLine("");
                Console.WriteLine("1 - Subtração");
                Console.WriteLine("2 - Adição");
                Console.WriteLine("3 - Divisão");
                Console.WriteLine("4 - Multiplicação");
                Console.WriteLine("5 - Sair");
                Opcao = Console.ReadLine();  


      if(Opcao.Equals("1"))
     {
     Console.Clear();  
     Tipo = "subtraido";  
     //resto do codigo
     }
     else if (Opcao.Equals("2"){
     Console.Clear();  
     Tipo = "adcionado";  
     //resto do codigo
    
     }else if (Opcao.Equals("3")){
       Console.Clear();
        Tipo = "dividido";
      // resto do codigo

     }else if (Opcao.Equals("4")) {
       Console.Clear();
        Tipo = "multiplicado";
     //resto do codigo
     }
}


}while(!Opcao.Equals("5"))

Dica: Use switch/case

 
do{
                         
                Console.WriteLine("Microsoft Corp.");
                Console.WriteLine("Lucas Henrique");
                Console.WriteLine("");
                Console.WriteLine("Calculadora");
                Console.WriteLine("");
                Console.WriteLine("1 - Subtração");
                Console.WriteLine("2 - Adição");
                Console.WriteLine("3 - Divisão");
                Console.WriteLine("4 - Multiplicação");
                Console.WriteLine("5 - Sair");
                Opcao = Console.ReadLine();  

switch(Opcao){

  case "1":
  {
                    Console.Clear();  
                    Tipo = "subtraido";  
                    //resto do codigo
  }
  case "2":
  {
                    Console.Clear();  
                    Tipo = "adcionado";  
                    //resto do codigo
  }
  case "3":
  {  
                    Console.Clear();  
                    Tipo = "dividido"; 
                    //resto do codigo
  }
  case "4":
  { 
                    Console.Clear();  
                    Tipo = "multiplicado"; 
                   //resto do codigo
  }
  default:{Console.WriteLine("opção invalida");}

}while(!Opcao.Equals("5"))

Obrigado, ajudou muito!

Agora só falta como usar ele no pen-drive.

[quote=fabriciov][code]
do{

            Console.WriteLine("Microsoft Corp.");
            Console.WriteLine("Lucas Henrique");
            Console.WriteLine("");
            Console.WriteLine("Calculadora");
            Console.WriteLine("");
            Console.WriteLine("1 - Subtração");
            Console.WriteLine("2 - Adição");
            Console.WriteLine("3 - Divisão");
            Console.WriteLine("4 - Multiplicação");
            Console.WriteLine("5 - Sair");
            Opcao = Console.ReadLine();  


  if(Opcao.Equals("1"))
 {
 Console.Clear();  
 Tipo = "subtraido";  
 //resto do codigo
 }
 else if (Opcao.Equals("2"){
 Console.Clear();  
 Tipo = "adcionado";  
 //resto do codigo

 }else if (Opcao.Equals("3")){
   Console.Clear();
    Tipo = "dividido";
  // resto do codigo

 }else if (Opcao.Equals("4")) {
   Console.Clear();
    Tipo = "multiplicado";
 //resto do codigo
 }

}

}while(!Opcao.Equals(“5”))

[/code]

Dica: Use switch/case

 
do{
                         
                Console.WriteLine("Microsoft Corp.");
                Console.WriteLine("Lucas Henrique");
                Console.WriteLine("");
                Console.WriteLine("Calculadora");
                Console.WriteLine("");
                Console.WriteLine("1 - Subtração");
                Console.WriteLine("2 - Adição");
                Console.WriteLine("3 - Divisão");
                Console.WriteLine("4 - Multiplicação");
                Console.WriteLine("5 - Sair");
                Opcao = Console.ReadLine();  

switch(Opcao){

  case "1":
  {
                    Console.Clear();  
                    Tipo = "subtraido";  
                    //resto do codigo
  }
  case "2":
  {
                    Console.Clear();  
                    Tipo = "adcionado";  
                    //resto do codigo
  }
  case "3":
  {  
                    Console.Clear();  
                    Tipo = "dividido"; 
                    //resto do codigo
  }
  case "4":
  { 
                    Console.Clear();  
                    Tipo = "multiplicado"; 
                   //resto do codigo
  }
  default:{Console.WriteLine("opção invalida");}

}while(!Opcao.Equals("5"))

[/quote]

Erro : ‘Opcao’ não existe no contexto. Eu já tinha tentado dessa maneira. O erro apareceu novamente.

[quote=LucasJavaTry][quote=fabriciov][code]
do{

            Console.WriteLine("Microsoft Corp.");
            Console.WriteLine("Lucas Henrique");
            Console.WriteLine("");
            Console.WriteLine("Calculadora");
            Console.WriteLine("");
            Console.WriteLine("1 - Subtração");
            Console.WriteLine("2 - Adição");
            Console.WriteLine("3 - Divisão");
            Console.WriteLine("4 - Multiplicação");
            Console.WriteLine("5 - Sair");
            Opcao = Console.ReadLine();  


  if(Opcao.Equals("1"))
 {
 Console.Clear();  
 Tipo = "subtraido";  
 //resto do codigo
 }
 else if (Opcao.Equals("2"){
 Console.Clear();  
 Tipo = "adcionado";  
 //resto do codigo

 }else if (Opcao.Equals("3")){
   Console.Clear();
    Tipo = "dividido";
  // resto do codigo

 }else if (Opcao.Equals("4")) {
   Console.Clear();
    Tipo = "multiplicado";
 //resto do codigo
 }

}

}while(!Opcao.Equals(“5”))

[/code]

Dica: Use switch/case

 
do{
                         
                Console.WriteLine("Microsoft Corp.");
                Console.WriteLine("Lucas Henrique");
                Console.WriteLine("");
                Console.WriteLine("Calculadora");
                Console.WriteLine("");
                Console.WriteLine("1 - Subtração");
                Console.WriteLine("2 - Adição");
                Console.WriteLine("3 - Divisão");
                Console.WriteLine("4 - Multiplicação");
                Console.WriteLine("5 - Sair");
                Opcao = Console.ReadLine();  

switch(Opcao){

  case "1":
  {
                    Console.Clear();  
                    Tipo = "subtraido";  
                    //resto do codigo
  }
  case "2":
  {
                    Console.Clear();  
                    Tipo = "adcionado";  
                    //resto do codigo
  }
  case "3":
  {  
                    Console.Clear();  
                    Tipo = "dividido"; 
                    //resto do codigo
  }
  case "4":
  { 
                    Console.Clear();  
                    Tipo = "multiplicado"; 
                   //resto do codigo
  }
  default:{Console.WriteLine("opção invalida");}

}while(!Opcao.Equals("5"))

[/quote]

Erro : ‘Opcao’ não existe no contexto. Eu já tinha tentado dessa maneira. O erro apareceu novamente.
[/quote]

Perdoe-me , não vi que você declarava as variáveis primeiro.

Obrigado

Tem que declarar as variaveis fora do loop do-while

Acho difícil que seu programa esteja funcionando, mesmo na sua máquina. Você provavelmente não está observando o console na hora de compilação, pois está o código está cheio de erros. Em vários locais você escreveu “Cosole” (sem “n”) no lugar de “Console”.

O Visual te dá a mensagem de que o build falhou, e te pergunta se você quer rodar a última compilação de sucesso e você, sem ler, aperta “sim”. Isso faz com que o último programa sem esses erros rode, por isso você tem a impressão de que na tua máquina funcionou. É recomendável ler as mensagens do compilador.

Corrigi o programa, usando o estilo do C#. Nessa linguagem, você pode comparar strings com ==. String é um tipo primitivo, assim como decimal.
Também removi código duplicado dentro de todos os ifs, removi a variável “tipo”, que era inútil, e reduzi o escopo das variáveis para o menor possível.

[code]
using System;

namespace Calculadora
{
class Program
{
static void Main(string[] args)
{
Console.Title = “Calculadora”;
while (true)
{
Console.Clear();
Console.WriteLine(“Microsoft Corp.”);
Console.WriteLine(“Lucas Henrique”);
Console.WriteLine("");
Console.WriteLine(“Calculadora”);
Console.WriteLine("");
Console.WriteLine(“1 - Subtração”);
Console.WriteLine(“2 - Adição”);
Console.WriteLine(“3 - Divisão”);
Console.WriteLine(“4 - Multiplicação”);
Console.WriteLine(“5 - Sair”);
string opcao = Console.ReadLine();

            Console.Clear();
            if (opcao == "1")
            {
                Console.WriteLine(" Digite o primeiro número a ser subtraído.");
                decimal number1 = decimal.Parse(Console.ReadLine());
                Console.WriteLine("Digite o segundo número ");
                decimal number2 = decimal.Parse(Console.ReadLine());
                Console.Clear();
                decimal total = number1 - number2;
                Console.WriteLine("O resultado da subtração de {0:0.00} - {1:0.00} é igual a {2:0.00}.", number1, number2, total);
            }
            else if (opcao == "2")
            {
                Console.WriteLine(" Digite o primeiro número a ser adicionado.");
                decimal number1 = decimal.Parse(Console.ReadLine());
                Console.WriteLine("Digite o segundo número ");
                decimal number2 = decimal.Parse(Console.ReadLine());
                Console.Clear();
                decimal total = number1 + number2;
                Console.WriteLine("O resultado da adição de {0:0.00} + {1:0.00} é igual a {2:0.00}.", number1, number2, total);
            }
            else if (opcao == "3")
            {
                Console.WriteLine(" Digite o primeiro número a ser dividido.");
                decimal number1 = decimal.Parse(Console.ReadLine());
                Console.WriteLine("Digite o segundo número ");
                decimal number2 = decimal.Parse(Console.ReadLine());
                Console.Clear();
                decimal total = number1 / number2;
                Console.WriteLine("O resultado da divisão de {0:0.00} / {1:0.00} é igual a {2:0.00}.", number1, number2, total);
            }
            else if (opcao == "4")
            {
                Console.WriteLine(" Digite o primeiro número a ser multiplicado.");
                decimal number1 = decimal.Parse(Console.ReadLine());
                Console.WriteLine("Digite o segundo número ");
                decimal number2 = decimal.Parse(Console.ReadLine());
                Console.Clear();
                decimal total = number1 * number2;
                Console.WriteLine("O resultado da multiplicação de {0:0.00} * {1:0.00} é igual a {2:0.00}.", number1, number2, total);
            }
            else if (opcao == "5")
            {
                break;
            }
            else
            {
                Console.WriteLine("Comando inválido!");
            }

            Console.WriteLine("Comando Concluído");
            Console.WriteLine("Aperte Qualquer tecla...");
            Console.ReadKey();
        }
    }
}

}[/code]

[quote=ViniGodoy]Acho difícil que seu programa esteja funcionando, mesmo na sua máquina. Você provavelmente não está observando o console na hora de compilação, pois está o código está cheio de erros. Em vários locais você escreveu “Cosole” (sem “n”) no lugar de “Console”.

O Visual te dá a mensagem de que o build falhou, e te pergunta se você quer rodar a última compilação de sucesso e você, sem ler, aperta “sim”. Isso faz com que o último programa sem esses erros rode, por isso você tem a impressão de que na tua máquina funcionou. É recomendável ler as mensagens do compilador.

Corrigi o programa, usando o estilo do C#. Nessa linguagem, você pode comparar strings com ==. String é um tipo primitivo, assim como decimal.
Também removi código duplicado dentro de todos os ifs, removi a variável “tipo”, que era inútil, e reduzi o escopo das variáveis para o menor possível.

[code]
using System;

namespace Calculadora
{
class Program
{
static void Main(string[] args)
{
Console.Title = “Calculadora”;
while (true)
{
Console.Clear();
Console.WriteLine(“Microsoft Corp.”);
Console.WriteLine(“Lucas Henrique”);
Console.WriteLine("");
Console.WriteLine(“Calculadora”);
Console.WriteLine("");
Console.WriteLine(“1 - Subtração”);
Console.WriteLine(“2 - Adição”);
Console.WriteLine(“3 - Divisão”);
Console.WriteLine(“4 - Multiplicação”);
Console.WriteLine(“5 - Sair”);
string opcao = Console.ReadLine();

            Console.Clear();
            if (opcao == "1")
            {
                Console.WriteLine(" Digite o primeiro número a ser subtraído.");
                decimal number1 = decimal.Parse(Console.ReadLine());
                Console.WriteLine("Digite o segundo número ");
                decimal number2 = decimal.Parse(Console.ReadLine());
                Console.Clear();
                decimal total = number1 - number2;
                Console.WriteLine("O resultado da subtração de {0:0.00} - {1:0.00} é igual a {2:0.00}.", number1, number2, total);
            }
            else if (opcao == "2")
            {
                Console.WriteLine(" Digite o primeiro número a ser adicionado.");
                decimal number1 = decimal.Parse(Console.ReadLine());
                Console.WriteLine("Digite o segundo número ");
                decimal number2 = decimal.Parse(Console.ReadLine());
                Console.Clear();
                decimal total = number1 + number2;
                Console.WriteLine("O resultado da adição de {0:0.00} + {1:0.00} é igual a {2:0.00}.", number1, number2, total);
            }
            else if (opcao == "3")
            {
                Console.WriteLine(" Digite o primeiro número a ser dividido.");
                decimal number1 = decimal.Parse(Console.ReadLine());
                Console.WriteLine("Digite o segundo número ");
                decimal number2 = decimal.Parse(Console.ReadLine());
                Console.Clear();
                decimal total = number1 / number2;
                Console.WriteLine("O resultado da divisão de {0:0.00} / {1:0.00} é igual a {2:0.00}.", number1, number2, total);
            }
            else if (opcao == "4")
            {
                Console.WriteLine(" Digite o primeiro número a ser multiplicado.");
                decimal number1 = decimal.Parse(Console.ReadLine());
                Console.WriteLine("Digite o segundo número ");
                decimal number2 = decimal.Parse(Console.ReadLine());
                Console.Clear();
                decimal total = number1 * number2;
                Console.WriteLine("O resultado da multiplicação de {0:0.00} * {1:0.00} é igual a {2:0.00}.", number1, number2, total);
            }
            else if (opcao == "5")
            {
                break;
            }
            else
            {
                Console.WriteLine("Comando inválido!");
            }

            Console.WriteLine("Comando Concluído");
            Console.WriteLine("Aperte Qualquer tecla...");
            Console.ReadKey();
        }
    }
}

}[/code][/quote]

Claro, sim , sim, depois li o código novamente e vi que havia o erro “Cosole”.
Na verdade amigo, não uso mais IDE’s. Uso justamente o notepad e o “csc.exe” . A única coisa que necessito no momento é saber como trazer o arquivo .exe sem compilá-lo no computador do professor.
Claro: Eu sei o que é uma string.
Ah, e no caso dos vários “if’s” eu alterei para switch.

Obrigado.

Entendi. É que essa é uma situação muito comum, especialmente para quem está começando na linguagem.
O pessoal não percebe que o próprio código não compila mais, pois o Visual fica rodando a última versão funcional do executável.
Pensei que seu professor fosse como eu, que exige os fontes e não os executáveis.

Agora, se você está rodando o compilador diretamente, melhor.
Para enviar o exe, basta enviar o arquivo executável e o .Net Framework Redistributable da versão do .Net que você tiver usado.
Se usar o Visual Professional ou Ultimate, ele pode gerar um instalador para você com a opção deploy.

Quando a saber o que é uma String, não imaginei que não soubesse. Mas é que em Java, só podemos comprar strings com equals. No C#, não existe esse problema pois o operador de == é sobrecarregado.

Quanto ao switch, eu particularmente prefiro o código com if mesmo. :slight_smile:

rafael eu sei do seu interesse por usar a linha de comando…

é muito importante conhecer as opções de compilação,

eu trabalho como programador c#…quando começei a aprender em outras linguagens: C com o bordand 5.0 não havia IDE, e era tudo na mão, não havia Debug nada…

a minha intensão naquela época era: “decorar a sintaxe da linguagem”, que na verdade não é bem a parte mais importante da programação, pois são milhares de comandos… a parte mais importante é a lógica…

e a IDE te abstrai dessa dificuldade de acertar a palavra certa , errar em virgulas, coisas que não contribuem para o aprendizado…

eu te aconcelho muito a utilizar uma IDE como VS express (gratuito), que te mostra os erros em tempo de programação, e você ainda consegue debugar suas aplicações com facilidade… Debugar ajuda muito no aprendizado.

Minha opinião.

[quote=douglaskd]rafael eu sei do seu interesse por usar a linha de comando…

é muito importante conhecer as opções de compilação,

eu trabalho como programador c#…quando começei a aprender em outras linguagens: C com o bordand 5.0 não havia IDE, e era tudo na mão, não havia Debug nada…

a minha intensão naquela época era: “decorar a sintaxe da linguagem”, que na verdade não é bem a parte mais importante da programação, pois são milhares de comandos… a parte mais importante é a lógica…

e a IDE te abstrai dessa dificuldade de acertar a palavra certa , errar em virgulas, coisas que não contribuem para o aprendizado…

eu te aconcelho muito a utilizar uma IDE como VS express (gratuito), que te mostra os erros em tempo de programação, e você ainda consegue debugar suas aplicações com facilidade… Debugar ajuda muito no aprendizado.

Minha opinião.[/quote]

Amigo, li seu comentário e achei muito legal, e baixei o Visual C# .
Eu sou muito interessado em informática. Isso pode parecer estranho, mas eu assisto vídeos na internet para ser “Um pouco mais rápido” .
Estou fazendo um console app. ,mas, realmente gostaria de fazer Windows Form mais ele não há metade das Tools. Então estou tentando fazer ele no notepad… Será que você poderia dar uma ajudinha???
Hehehe, obrigado, Lucas.

[quote=ViniGodoy][quote=LucasJavaTry]
Claro, sim , sim, depois li o código novamente e vi que havia o erro “Cosole”.
Na verdade amigo, não uso mais IDE’s. Uso justamente o notepad e o “csc.exe” . A única coisa que necessito no momento é saber como trazer o arquivo .exe sem compilá-lo no computador do professor.
Claro: Eu sei o que é uma string.
Ah, e no caso dos vários “if’s” eu alterei para switch.
[/quote]

Entendi. É que essa é uma situação muito comum, especialmente para quem está começando na linguagem.
O pessoal não percebe que o próprio código não compila mais, pois o Visual fica rodando a última versão funcional do executável.
Pensei que seu professor fosse como eu, que exige os fontes e não os executáveis.

Agora, se você está rodando o compilador diretamente, melhor.
Para enviar o exe, basta enviar o arquivo executável e o .Net Framework Redistributable da versão do .Net que você tiver usado.
Se usar o Visual Professional ou Ultimate, ele pode gerar um instalador para você com a opção deploy.

Quando a saber o que é uma String, não imaginei que não soubesse. Mas é que em Java, só podemos comprar strings com equals. No C#, não existe esse problema pois o operador de == é sobrecarregado.

Quanto ao switch, eu particularmente prefiro o código com if mesmo. :)[/quote]

Oi Vini!
O meu professor, por enquanto , pede apenas o executável, pois comecei faz , mais ou menos, uma semana…
Ah, e quanto ao .Equals … Java ainda faz minha cabeça :stuck_out_tongue: :stuck_out_tongue: :stuck_out_tongue:

Obrigado !!!

claro.

seu programa deu certo ?

[quote=douglaskd]claro.

seu programa deu certo ?[/quote]

Sim :smiley: