Tutorial C# – II
Mais uma quinta-feira mais um tutorial sobre C#. Hoje vamos começar a trabalhar com variáveis e estruturas de decisão (if/else). O tutorial de hoje será simples, e visa somente em escrevermos três números, e o programa irá "dizer" qual o maior.
Em programação as variáveis fazem sempre parte da estrutura do código. No tutorial de hoje vamos a começar a trabalhar com este aspecto importantíssimo na programação.
Vamos então por mãos à obra.
Antes de começarmos a programar, vamos pensar como funcionará o programa.
O objectivo é criarmos três "textbox" onde vamos digitar um número em cada uma. No fim, o programa vai indicar qual o maior.
- Após termos iniciado um novo projecto vamos "arrastar" um botão e três textbox para a form.
No tutorial de hoje é importante atribuir um nome a cada textbox para ser mais fácil construir o código.
Para atribuir um nome à textbox temos de fazer o seguinte:
- Clique com o botão direito do rato em cima da textbox e seleccione Properties
Irá visualizar as propriedades da textbox.
Procure o campo (name). No campo "name" irá verificar que tem o nome "textBox1".
Altere o valor por exemplo para tB1.
Faça o mesmo para as outras textbox.
Altere para tB2 e tB3 respectivamente.
Depois de ter efectuado este passo, clique duas vezes no botão para poder escrever o código.
Começamos a declarar as variáveis.
No caso de números inteiros as variáveis declaram-se com um int (tem de ser colocado em minúsculas), mas neste caso vamos usar uma textbox que normalmente é usada para colocar texto.
Devido a este facto vamos ter de fazer uma pequena conversão, como será mostrada posteriormente.
int num = Int32.Parse(tB1.Text);
Este exemplo de código representa:
- int num - (criei uma variável de inteiros, à qual atribui o nome "num")
- Int32.Parse - (serve para converter um outro tipo de variável para inteiro. Este "int" tem de ser escrito com i maiúsculo. O 32 significa o número de bits que suporta, pode escolher também o Int16 ou o Int64, conforme o tamanho do número inteiro.)
- (tB1.text) - (atribui à variável o valor que estará dentro da textbox. Como se trata de uma textbox, a seguir ao nome (tb1) temos de colocar o .(ponto) Text.
Temos de efectuar este mesmo passo para as outras textbox.
int num1 = Int32.Parse (tB2.Text);
int num2 = Int32.Parse(tB3.Text);
Agora o programa já "sabe" quais os números que estão nas textbox.
Mas como o objectivo deste tutorial é o programa indicar qual o número maior vamos precisar de mais código.
Irá também verificar que em programação existem diversas formas de chegar a um resultado.
No tutorial de hoje vou mostrar duas maneiras distintas para conseguir realizar o pretendido neste tutorial.
1º Tipo de resolução
Começamos por criar mais uma variável. Esta variável será a "base de dados", isto é, quando efectuarmos a comparação entre os números, ela vai guardar o número maior dessa comparação.
- Criei uma nova variável de inteiro com o nome aux. Como não vamos atribuir nenhuma textbox a esta variável, vamos precisar de lhe atribuir um valor. Como se trata de uma variável de inteiros, vamos atribuir o valor 0 (zero).
- Também criei uma nova variável com o nome maior para guardar o resultado de todas as comparações. Tal como a variável aux, vamos atribuir o valor 0 (zero), se não o fizermos o programa dará erro.
int aux = 0;
int maior = 0;
Após termos criado esta nova variável, vamos começar a fazer as comparações entre os números.
Para efectuamos esta comparação, vamos utilizar as estruturas de decisão if / else.
Para o programa determinar qual o número maior, vamos fazer a comparação.
A lógica de pensamento é:
Se o num é maior que o num1
Então
o aux é o num
Senão
aux é o num1
Agora que determinamos qual o maior número dos dois primeiros, vamos comparar com o terceiro.
Se o num2 é maior que o aux
Então
o maior número é o o num2
Senão
O maior número é o aux
Antes de escrever o código, para fazermos a comparação precisamos dos símbolos > (maior) e < (menor)
O código:
int aux = 0;
int maior = 0;
if (num > num1)
aux = num;
else
aux = num1;
if (num2 > aux)
maior = num2;
else
maior = aux;
Agora que a comparação já está feita, vamos fazer com que o programa mostre o resultado.
Mais uma vez recorremos à MessageBox.
O código será:
MessageBox.Show("O número maior é: " + maior.ToString());
Como pode verificar, a seguir ao campo de texto da textbox foi acrescentado "+ maior". Isto faz com que além do texto seja acrescentado o valor da variável maior.
Também foi acrescentado o ToString, como a TextBox é do tipo string (texto) e a variável maior é do tipo int (inteiro), temos de converter a variável maior para string. Por esse motivo é utilizado o ToString.
O resultado final será o seguinte:
Como mencionei no início, existem diversas formas de atingir um resultado.
Irei mostrar agora um outro tipo de resolução.
Vamos precisar de outro tipo de código de controlo, neste caso vamos usar o "e", que se escreve em C# da maneira &&.
2º Tipo de resolução
A lógica de pensamento é:
Se
o num for maior que o num 1 e maior que o num2
Então
o maior é o num
Se o num1 for maior que o num e maior que o num2
Então
o maior é o num1
Se o num2 for maior que o num e maior que o num1
Então o maior é o num2
O código:
if (num > num1 && num > num2)
maior = num;
if (num1 > num && num1 > num2)
maior = num1;
if ( num2 > num && num2 > num1)
maior = num2;
Voltamos então a mostrar novamente o resultado através da MessageBox.
MessageBox.Show("O número maior é: " + maior.ToString());
O resultado desta resolução é igual ao primeiro.
Espero que tenham gostado. Cada semana o grau de dificuldade irá aumentar.
Download: Tutorial C# 02 PDF
Qualquer dúvida ou sugestão pode sempre ser enviado para helio.moreira@pplware.com
Este artigo tem mais de um ano
O exemplo é bom, obrigado. Talvez ousaria dar outra sugestão (usando também apenas o if /else ):
uso maior ou igual porque os números podem ser iguais..
if (num >= num1 && num >= num2)
maior = num;
else
if (num1 >= num2)
maior = num1;
else
maior = num2;
Boa iniciativa.
M Silva
Tentem esse:
void Button1Click(object sender, EventArgs e)
{
int num = Int32.Parse(tB1.Text);
int num1 = Int32.Parse(tB2.Text);
int num2 = Int32.Parse(tB3.Text);
int aux = 0;
int maior = 0;
if (num >= num1){
aux = num;
MessageBox.Show(“O Número Nº1 é igual ao Nº2: -> ” + num.ToString());
}
else
aux = num1;
if (num2 >= aux){
maior = num2;
MessageBox.Show(“O Número Nº2 é igual ao Nº3: -> ” + num1.ToString());
}
else
maior = aux;
MessageBox.Show(“O Número maior é: ” + maior.ToString());
}
Pensei que era um tutorial sobre xingamentos, C#@$&*!§¢£
Ok eu não quero estar mais uma vez a ser o gaijo que põe o dedo na ferida mas como programador, e pessoa que tem a seu cargo vários, uma das coisas que eu detesto é que se escreva mau código. E uma das normas de ouro é dar nomes às coisas que ajudem o código a ser legível e que seja facil identificar o tipo com que estamos a trabalhar.
Chamar tB1 e tB2… e num, num1 e num2… a objectos e variaveis… não é a minha ideia de boas práticas.
Eu sei que isto é um tuturial e que para o efeito não há problema. Mas como meu avô dizia… de pequenino se torce o pepino e por isso acho que já que estamos a fazer tuturials, devemos faze-los respeitando as boas práticas de programação desde o exemplo mais básico ao mais complexo.
Desculpem o rant mas detesto código deste tipo.
Lol… É complicado devo admitir…
Acompanhei estes dois tutoriais.
Acho a iniciativa muito boa, só não percebo por que razão toda a gente me diz que pascal é uma linguagem ultrapassada e pouca gente utiliza o Delphi ou Lazarus.
A meu ver, está ao nivel de C# ou acima.
Tenho desenvolvido muito programa em pascal e até à data, nenhum problema.
Já agora, em pascal seria qualquer coisa do género:
var num1, num2, num : integer;
begin
num:=strtoint(tB1.text);
num1:=strtoint(tB2.text);
num2:=strtoint(tb3.text);
if ((num1 > num) and (num1 > num2) then maior:=num1;
showmessage(inttostr(num1));
end;
Aqui não existem problemas de maiúsculas ou minúsculas, converter inteiro para string é intuitivo: inttostr, o contrario tb strtoint.
Por mais que procure, não percebo por que os entendidos não gostam de Lazarus, muito menos de Pascal!!!
@Hélio Moreira
Não quero com isto dizer mal do teu trabalho!
Acho que estás a fazer um excelente tutorial.
Boa continuação, isto foi só um desabafo.
@J.C
Tens bom remédio, não leias 🙂
“Altere o valor por exemplo para tB1.” – Por exemplo! Agora cada utilizador da’ os nomes que quiser!
@n3XXuS
O J.C tem toda a razão naquilo que diz, quando se trabalha em equipa, ou se faz um pequeno projecto para o corrigir daqui a 3 anos, os nomes de objectos/variáveis/classes/propriedades/etc. serão muito importantes para uma rápida leitura do código.
E não haja dúvida nenhuma, é realmente uma questão de hábito, pois os IDE actuais dão muitas ajudas na escrita de código com nomes grandes, pelo que, escrever “coisas” com nomes enormes não se tornam um problema, antes pelo contrário.
De qualquer modo é uma boa iniciativa.
@Simoes
Tenta programar algo bastante avançado e ve se na sentes falta de um linguagem com esta, nao e a toua que nao se usa pascal em jogs e softwares nao? tudo tem um razao de ser, pois ate penso que porvavelmente pascal e mais rapido que C#, o q ue tecnicamente seria bom para performance… mas isso e adbicado ter termsod e outras coisas
J.C. compreendo o que queres dizer, mas ser programador é algo muito complexo…para se ser apenas um analista programador é necessária muita experiência (pelo menos 7 anos de boas práticas) e ter a sorte de ser bem ensinado! Muita gente julga que sabe programar mas não sabe….Bom mas independentemente disso, ensinar a programar ou apenas escrever um tutorial é muito mais complicado que programar, porque chegar a todos num campo em que o desenvolvimento do raciocínio lógico e a compreensão de um problema conceptual é muito mais importante que a própria linguagem de programação (meramente importante na fase de implementação em que é necessário codificar a resolução de algo…) não é fácil. Além disso, creio que ainda não é o momento certo do Hélio eventualmente mencionar termos como “Pascal Casing” ou “camelCasing”…Nem sequer em paradigmas..
M Silva
Olá Simões, todas as linguagens de programação são boas se utilizadas para os objectivos certos! Esquece questões relacionadas com ser case sensitive ou não, ou até ser interpretada ou compilada…Cada linguagem foi desenvolvida com fins específicos, dentro da mesma classe de linguagens (JAVA, C++, C#) por vezes são modas e as pessoas aderem mais numas que outras…logo há mais código disponível na Internet e assim por diante…No caso das linguagens orientadas a objectos o JAVA teve uma grande aceitação porque colmatou algumas deficiências do C++ (por exemplo no desenvolvimento de aplicações web e outras coisas mais) e houve uma grande aderência…logo código disponível…Por exemplo o Delphi foi a primeira “.NET” que apareceu..Uma grande linguagem (baseada na sintaxe do pascal), no entanto a Microsoft foi buscar o cérebro da mesma a peso de ouro e assim nasceu o .NET…Por exemplo o python é uma excelente linguagem para determinados problemas, etc, etc…Enfim podia ficar aqui a noite toda a contar histórinhas 🙂 mas tenho mais que fazer.
M Silva.
@Simões
Penso que a escolha do C# sobre outras linguagem vai mais para além da linguagem ser melhor ou pior que outros. A mais valia do C# , na minha opinião, vem, essencialmente do Framework .NET que a MS desenvolveu e que considero excelente.
Apresenta uma fantástica base de trabalho e acelera em muito o desenvolvimento de aplicações complexas.
Não quero com isto dizer que o Delphi ou Pascal sejam maus. Longe disso. Penso é que talvez pelas empresas serem mais MS-dependente com Windows e afins, naturalmente a programação das tecnologias MS sejam preferiveis.
Por exemplo, referes o facto do case-sensitive, mas as linguagens C-based sempre assim forma, e/mas no .NET tb há o VB.NET, com capacidades identicas, que já partilha o não case-sensitivity do Basic; Diria que o case sensitivity do C# até é uma mais valia.
Referes que converter inteiro para string é intuitivo usando inttostr – no caso do .NET tens o Int32.Parse(), que converte não apenas uma string para inteiro, mas practicamente qualquer object que possa ser convertido para interior em inteiro (com os diversos overloads pré-establecidos) ou até o Int32.TryParse que converte e retorna um boolean a indicar se foi ou não convertido. Repare que não é algo da linguagem por si só, é acima de tudo da framework de trabalho, e que é partilhado nas diversas linguagens associadas. Creio muito que é esta a mais valia, e o detalhe que tenderá a estabelecer a escolha.
@Hélio.
Parabéns pela iniciativa. No entanto, não sei se concordas, mas os tutoriais não são tanto de C# em si, mas mais de Windows Forms com C#. Não seria mais interessante “leccionar” o C#, recorrendo à base e explicando a linguagem – (tipos, estrutura, e essencialmente a programação por objectos, etc.) do que recorrer ao GUI para a explicar. Ou seja mais virado para a consola e menos para o GUI, para não confundir aquilo que são as classes ligadas aos Forms com o que é a estrutura da linguagem? Por outro lado talvez seja irrelevante.. lol. Seja como for, contínua!
Bom tutorial. Comecei a meses a aprender c#, contudo se me permites a correcção:
Acho que devias usar { } sempre em cada ciclo. Neste caso não é preciso porque so usas uma linha dentro do ciclo, mas para mais linhas é obrigatorio… Só mesmo para evitar futuros erros.
@Joaquim Almeida
Sim, eu concordo contigo nesse aspecto mas repara, não me parece que alguém que esteja a ler um tutorial de C# vai lançar um projecto ou trabalhar em equipa, pelo menos na área de desenvolvimento de software tão cedo. Como deves compreender nem todos os leitores do pplware tem noções básicas de algoritmia nem o habito de programar, seja em que linguagem for. Como e’ lógico, se trabalhares numa equipa, convém dar nomes as variáveis de maneira a que todos percebam que variável e’ aquela e qual a sua função. Mas este tutorial e’ muito básico, serve quase como um incentivo para aqueles que ainda não exploraram esta linguagem, e nesse contexto acho que cada um deve usar as variáveis que achar mais correctas.
Eu dei C na escola mas não orientado a objectos é das minhas linguagens de programação preferidas.
Pelo que vi em cima isto tipo o visual basic do C.
Parabéns e óptimo trabalho.
maior = Math.Max(num2, Math.Max(num, num1));
apenas mais uma solução… 🙂
(onde Math.Max(x,y) devolve o numero maior entre x e y)
Grande ideia mais uma vez. Parabens.
Digam-me já agora uma forma de programar C# no Ubuntu, já que no primeiro post só indicaram o Microsoft Visual Studio 2008 Express Edition.
Cumps
Helder
@Bruno Andrade
Sim, é uma boa prática usar os { } mas como tu dizes, e muito bem como só há uma linha para o ciclo, logo não é necessário. Mas em posteriores tutoriais, certamente vai ser necessário usar as { }. 🙂
@MytyMyky
Concordo contigo, mas estes primeiros tutoriais são unicamente para “apresentar” o C#, mas o C# é orientado para objectos. E o polimorfismo, e afins, vão ser ensinados, e aí não haverá tanto a parte das windows forms, mas sim o “código puro”. 🙂
@J.C
Pelos vistos és um expert em todas as áreas, pois sempre que aparece algo, o teu objectivo é criticar destrutivamente. Infelizmente, e quando vou ler algum dos teus comentários aqui no PPLWARE, seja em tutoriais, como em artigos, tu só criticas. Desculpa o desabafo. Em relação à tua critica, penso que não existe a maneira ideal, ou a maneira má de declarar os nomes das variáveis ou qualquer outro tipo de código. Cada um escreve o código como lhe interessar mais. Apesar de eu não escrever o código da maneira como escrevi neste tutorial (foi assim que aprendi), sobretudo penso que seja a maneira mais simples para ententer como as coisas funcionam. Porque se ao segundo tutorial entrasse “a matar”, com código como escrevo profissionalmente, e usando o que uso no dia a dia, quem quisesse aprender, iria ficar sem perceber nada. 🙂
@M Silva e @JTeixeira
Sem “tirar nem por” 🙂 Obrigado pela vossa colaboração.
Cumps,
Hélio Moreira
Um pequeno acrescento ás criticas construtivas que foram feitas;
Penso que deverias ir com mais calma e tentar tipo explicar o que são variaveis e tipos de variaveis, ex: string, bool , double, long, etc etc..
Pois para quem nunca viu programaçao na vida e esta a tentar aprender atraves do pplware pode fazer alguma confusão.
HENRIQUE POWAAAA!!
@M. Silva
O java veio colmatar algumas deficiencias do C++?O que o java veio fazer foi permitir construir um programa que executa-se em qualquer maquina que tivesse a java virtual machine (jvm) instalada,ou seja,veio garantir a portabilidade dos programas virados para a web,pois dessa forma eu ao entrar numa pagina que contenha uma applet desenvolvida em java eu posso executa-la em windows,linux ou mac desde que tenha a jvm instalada.O C++ faz tudo o que o java faz e até mais,embora n tenha o garbage collector que da mt jeito mas e algo que pode ser implementado em C++.
@Simões
Desenvolves muitos programas em pascal?Para que uso?O pascal é uma linguagem estritamente funcional tal como o c que n é orientada a objectos e que ao contrario do c n permite uma manipulacao da maquina a baixo nivel,dai o pessoal n usar muito o pascal hoje em dia.O Delphi nc mexi mas ja ouvi falar mt bem,pelo k percebi é o pascal orientado a objectos, uma especie de visual pascal,foi o k percebi posso estar errado se estiver corrijam.O problema de n ser tao usado como o java ou o c# tem a ver apenas com o facto de n ser mt divulgado penso eu.
@Artigo 🙂
Int32.Parse serve apenas e só para converter Strings para inteiros e mesmo as Strings que se convertem tem que ser numeros,se tentarmos por exemplo usar este codigo: Int32.Parse(“Hello World”) ele lancara uma excepcao.Outra questão é já que abordaste um problema com mais do que 2 variaveis,neste caso 3 e em que pretendessaber qual é o maior penso que poderias ter aproveitado para abordar a ordenacao,pois em 4 linhas de codigo provavelmente o problema seria resolvido,e sempre era mais alguma informacao util.A lista dos tipos basicos existentes em C# tb era uma boa ideia,mesmo para quem ja tem algum habito a programar as vezes da sp jeito.De resto penso que foi um bom trabalho,embora concorde com o JC que as boas praticas devem comecar a ser fomentadas logo que nos iniciamos em qualquer actividade.
PS: Continua,estou a gostar,principalmente pela quantidade de comentarios que aparecem,que nunca pensei que fosse tao grande.
Continua 🙂
Apenas mais uma solução
maior = num > num1 ? num : num1;
maior = maior > num2 ? maior : num2;
Aikon..
@JTeixeira:
É uma boa solução, mas obrigas a incorporação da classe Math e de tudo que ela tem de bom…mas necessária nesta altura do campeonato(?).
@Aikon: Em termos de praticas de ensinamento não vejo vantagens por agora dar a conhecer essa forma…Se era para ocupar menos linhas de código:
int maior = (num >= num1 && num >= num2 ? num : (num1 >= num2 ? num2 : num3));
@Shogun: Olá, creio que dissemos o mesmo, mas tu de uma forma mais bem explicada (o meu texto já era grande). Justamente a diferença foi essa: ter uma linguagem orientada a objectos que pudesse correr num “browser” (principalmente isso) e não só: no entanto em C++ podes compilar em qualquer sistema operativo (multiplataforma, não é o problema, pode dar um pouco mais de trabalho só isso) . Além disso o conceito de máquina virtual estendeu-se de forma massiva (olhemos para o flash em que 95 % das pessoas que têm um PC têm a “máquina virtual” do flash). Esse foi o principal fenómeno de mudança. Relativamente ao que dizes sobre o C++ gostava que me desses exemplo mais concretos sobre o que o C++ fazia mais relativamente ao JAVA? Tenho de discordar em vários aspectos: pensando em vários níveis de programadores: Gestão de memória e “threats” mais fácil em JAVA e com alguns níveis de abstracção para o programador…Inclusive já compilei programas em C++ para comparar questões de performance com JAVA e olha que na maior parte dos casos não notei diferença…Estou a falar de algoritmos que exigem já um nível de performance elevado…Isto parece um paradoxo e difícil de acreditar mas é verdade! No caso do C as diferenças já se notam a favor do ANSI C claro. Já para não falar de questões relacionadas com a interface gráfica em que com C++ o processo é bem mais complicado sendo necessário recorrer a widgets (em que a curva de aprendizagem é mais demorada) ao contrário do swing…Enfim podia dar-te mais exemplos…(Atenção é apenas a minha opinião)
M Silva
Só como sugestão, penso que a fim de não gerar nenhuma excepção na conversão de string para int.
Em vez de fazer:
int numero = Int32.Parse(caixaTexto.texto);
Porque não:
int numero;
Int32.TryParse(caixaTexto.texto, out numero);
// esta instrução faz o mesmo que a anterior mas não gera uma excepção e devolve verdadeiro ou falso dependendo do sucesso da conversão.
Só uma sugestão.
Cumps
NOTA:
para os que estao a aprender. usar:
try{ …Int32.Parse…}catch(Exception e){ avisa erro }
pelos vistos aqui somos todos “grandes” programadores.. mas os vossos comentarios em nada ajudam. Só confundem quem esta a aprender. Try catch ja é algo um pouco avançado pra quem esta a dar os primeiros passos.. e estes tutorials sao pra quem está a aprender nao pra quem vem praqui mostrar que sabe.
Voces podem todos saber programar (uns melhor que outros naturalmente) mas em termos de ensinamento teem mto a aprender. Sou Programador informatico de profissão e tive um curso de formação pra formadores e acreditem a reallidade pra quem está a aprender é mtoooo diferente da nossa.
“small baby steps.”
é só a minha opinião naturalmente
@aaa
Isso nesta “altura do campeonato” ainda é muito complicado. Irão ser disponibilizados tutoriais sobre o tratamento de erros / excepções.
Cumps,
Hélio Moreira
Concordo com muita coisa que foi dita aqui, mas não quando dizem que o C é estritamente funcional.
Um linguagem estritamente ou puramente funcional é uma linguagem que só tem noção de funções e logo não tem dimensão temporal.. Sendo o C uma linguagem do paradigma imperativo, logo tem dimensão temporal… o C permite uma programação estruturada em que o programa é sub dividido em procedimentos e/ou funções, mas sempre num paradigma imperativo.
Num ambiente estritamente funcional apenas se define as funções (não confundir com procedimentos) e não a ordem que em que estas podem ser executadas, apesar de terem mecanismos para se praticar programação imperativa (ex: Haskell, Lisp, …)
só este reparo, mas percebi o que se queria dizer
Quanto às diferenças entre Java e C++ …
O Swing é uma biblioteca que permite criar GUI’s… não faz parte da linguagem Java mas sim da biblioteca de classes da plataforma Java.. o que é bastante diferente. Também existem bibliotecas “cross-platform” para o mesmo efeito em C++
Quanto ao C++ ser mais poderoso que o Java, basta olhar para os C++ Templates que permitem muito mais liberdade. Apesar de agora o Java ter os tipos Generics (tal como o C# 2.0) estes foram todos baseados nos C++ Templates.
cumps
Parabéns!
Adoro iniciativas deste género!
Continua o bom trabalho, Saudações.
mais um Excelente post… Grande ajuda que me deu!
http://www.best-cine.com :: Saiba tudo sobre CINEMA!
Outra solução passa por ordenar por ordem crescente os números, em que o último número da solução é o número maior, vice-versa.
Isto pode ser feito recorrendo a matrizes, ou listas.
mto bem. Bom artigo
@Helder
Para linux existe o Mono, que é uma versão open source do .NET framework.
http://www.mono-project.com/, e para programar com ela podes usar o MonoDevelop que tb é free.
Quanto ao tutorial, é claro que o código poderia estar muito mais optimizado, mas a ideia é que quem não sabe C# aprenda alguma coisa e esse objectivo parece ser conseguido. Portanto acho desnecessário tanto comentário sobre como o código deveria ter sido escrito. O tempo e a pratica fazem o resto para quem quer aprender.
@Pedro Silva
Peco dsc de facto foi um erro,eu keria dizer imperativa em vez de funcional,o ml é k é funcional por exemplo.
@Magic
Penso que niinguém quis dizer k o codigo apresentado deveria ter sido outro,apenas apresentamos outras solucoes,da msm forma k o autor do artigo da o seu grande contributo,penso q kem comenta tb pode dar o seu contributo apresentando outras solucoes de modo a kem esta a aprender e msm kem ja sabe mt encontrar sp alternativas aos seus metodos,novas ideias penso k nc fizeram mal a ng,o k acontece e k as vezes a forma de contribuir pode n ser entendida como um contributo mas sim uma critica destrutiva,n sendo essa a intencao de ng penso eu.
@M Silva
No C++ tens k fazer a gestao de memoria manualmente o k as vezes pode ser util,tal como podes fazer o acesso directo a memoria com apontadores,era esse tipo de coisas que eu keria dizer,e de facto um programa escrito em C++ pode correr em kk SO mas primeiro tens k o compilar para esse SO o k n acontece com o java k apenas necessita ser compilado uma vez.Concordo cnt kd dizes k e mais facil aprender a desenvolver GUI´s (graphic user interfaces) em java do k em C++ mas a liberdade k tens por exemplo a trabalhar com awt em java n e a msm k tens a trabalhar com a win api em c++ nem tens as msm possibilidades,posso-me referir a uma api simples bitblt,axo k e assim k se escreve k n e possivel,ou pelo menos ainda n consegui, usar em java.
PS: Todos os comentarios sao uteis estamos sp a aprender uns com os outros, ng ker exibir-se como um “grande programador” como ja alg aki disse,mas sim partilhar o seu conhecimento e as suas ideias,claro k ha passos k sao enormes para alguns mas para outros sao mais pekenos e este post tal como o blog sao dirigidos a um vasto grupo de leitores.
@ Shogun
Não é preciso pedir desculpa 🙂
“posso-me referir a uma api simples bitblt,axo k e assim k se escreve k n e possivel,ou pelo menos ainda n consegui, usar em java.”
É assim que se chama.
Podes usar a API, “apenas” tens de criar o interface JNI para ela 🙂
Internamente a AWT deve usar essa API (através do JNI, como é óbvio), mas não deve permitir usa-la directamente.
Não fazia muito sentido, porque desse modo a AWT deixaria de ser “platform-independent”, visto que o comportamento da AWT é indeferente do SO que está por baixo… isso é conseguido, claro, através do JNI 🙂
cumps
Parabens pplware & Helio. Considero uma excelente iniciativa. Realmente há muitas outras formas de proceder para chegar à mesma solução mas para um primeiro contacto as vossas abordagens foram muito simples e compreensíveis.
Contudo há sempre pessoas com uma visão destrutivas mas sinceramente deveriam perceber a finalidade deste post – Ensinar os primeiros passos do C#!!!! Quando aprendi na faculdade também eram programinhas “HelloWorld” mas era só para começar a entender como funcionava tal como este post. Quem realmente gostar e se interessar por esta linguagem, depois dos primeiros passos, que investigue e há dezenas de sites onde se pode aprender (em programação nunca se sabe tudo e para além disso há sempre outras formas de fazer as coisas).
Cumprimentos
@ shogun
concordo plenamente com os contributos mas mais uma vez volto a frizar para o facto de isto ser um tutorial e pra quem esta a aprender aquilo que pode ser para ti uma “outra” soluçao para essa pessoa pode ser uma grande confusão! É isso que quero dar a entender.. normalmente num primeiro contacto ate as pessoas estarem bem cientes do que estao a fazer nao se apresenta outras soluçoes.
A titulo de exemplo se tentares explicar aos teus avós o que é o copy-paste penso que iras ter mais sucesso em lhe explicares apenas o “botao direito do rato ===> copiar e dps a botao direito do rato colar” do que propriamente dizeres k teem o CTRL + C e CTRL +V e ainda podem ir a Editar ==> copiar.. Editar… colar.. ou ainda pressionar o CTRL enqt arrastam.. epah ha uma panoplia de soluçoes.. mas no momento em que estao a aprender.. uma unica solução é o suficiente pa apanhharem a ideia e nao serem confundido.
again.. just my opinion.
Muitos parabéns!
Linguagem simples e acessível e descrição passo a passo.
Muito bom para principiantes.
@M Silva
Postei aquilo, não pensando no ensino nem na economia de linhas, apenas postei uma solução, usando um recurso que ainda não haviam comentado..!
Att
Aikon..!
@M Silva
E ainda pensando em ensinamento, o seu código está incorreto.
No exemplo do post, em 1 linha seria
maior = (num >= num1 && num >= num2 ? num : (num1 >= num2 ? num1 : num2));
sim senhor, continuem…
estou a gostar! e tou a ver que anda muita gente por ca em programação…
hehe…
eu estou a pensar em criar um site para programadores, mas para ajudar em desenvolvimento de software educativo open source e em portugues, mas facilmente adaptavel a outras linguas… alguem alinha??? eu tenho ideias e material, falta-me é pessoal a ajudar… 🙂
@Dark
Gostei da idéia do site, posso ajudar com apostilas e tutoriais, e ajudas com fóruns também..
Att
Aikon
42 comentários e todos com conhecimentos em C#
Sou muito burro ou muito cego! onde é que o programa vai “buscar” os Números 10 12 14? A lógica de os ordenar compreendo mas em que sítio é que lhe disseram que os nrs a ordenar eram estes?
Mas vocês não sabem qual é o maior? É preciso um programa para isso? lol …. estou a brincar 😉
@Nelson N
“O objectivo é criarmos três “textbox” onde vamos digitar um número em cada uma. No fim, o programa vai indicar qual o maior.” – Passas-te isto a’ frente? E’ suposto tu meteres 3 números e ele dizer-te o maior, não interessa quais os números que metes. LOL!
@C. Oliveira
LOOOOOL! ^^
Primeiro os meus parabens pela excelente iniciativa.
Eu concordo com o uso do GUI logo no inicio, ou a maioria das pessoas desistia logo.
Quanto á escolha do C#, hummm…. Apesar de evitar ao extremo linguagens interpretadas, devo reconhecer, que a framework .Net é muito boa e por isso é uma boa escolha, mas qualquer outra linguagem k use o .Net sevia.
Para os actuais ou antigos utilisadores das linguagens que usam a VCL, é obvia a evidencia de que o .Net é no seu grande essencial uma copia da VCL.
OFF TOPIC: Quanto ao facto do C++ não ter grande vantagem em relação ao Java em algoritmos complicados, peço desculpa, mas a minha experiencia diz-me sempre o contrario.
Normalmente o problema é que não podemos programamos em C++ como como se estivese-mos a programar Java, não pode ser assim.
O C++ é uma fortissima linguagem, mas bem dominada, não basta programar algo em C++ e dizer que por ser em C++ vai ter muita performance, tem que se levar as coisas mais a serio e estar disposto a “sujar um poucos as mãos” e usar tudo o que o C++ nos dá, dá trabalho, mas os resultados são compensão largamente para codigo que necessite de uma elevada performance
Ou meus amigos se não querem sujar as mãos nem vale a pena pensar em C++, usem outra liguagem.
Eu acho que este tutorial devia continuar. Por causa de alguns cometários eu e outros que gostámos deixámos de ter.
abraço aos bem-intecionados.
Caro amigo seria possivel me enviar tutorial de C# para desenvolviemnto Web:::???
Boas!!
Parece que os comentários abrandaram um pouco (espero ter resposta).
Antes de mais parabéns pelo trabalho, muito bom e útil.
Agora relativamente ao programa.
Penso que é um bom exemplo para iniciar. Embora penso que este mesmo exemplo podia ter um segundo capitulo, mesmo sem a utilização de coisa desnecessárias nesta altura do campeonato.
Esse tal segundo capitulo poderia, por exemplo expor (que são as minhas duvidas):
como é que se poderá saber qual a textBox cujo numero é maior;
como efectuar a operação não preenchendo uma textBox, ou seja, com textBox(s) vazia(s);
(e por ultimo) Como prevenir que ocorram erros, ou que seja preenchida uma textBox com um caracter invalido, diferente de número;
Obrigado
private void bt_adicionar_Click(object sender, EventArgs e)
{
if (txt_nome.Text == “”)
MessageBox.Show(“favor inserir o nome”);
else if (txt_peso.Text == “”)
MessageBox.Show(“favor inserir o Peso!”);
else
{
ListViewItem items = new ListViewItem();
items.Text = txt_nome.Text;
items.SubItems.Add(txt_peso.Text);
lstvw_add.Items.Add(items);
txt_nome.Text = “”;
txt_peso.Text = “”;
txt_nome.Focus();
}
}
}
}
gostaria de saber o resultado final de quem é mais pesado.
Mas não sei como continuar…
obrigado