Tutorial C# – Nova temporada
Olá a todos, este é o meu primeiro post de muitos (espero eu) em que vos vou falar de programação em C#. Porquê C#? Porque é sem duvida a mais robusta e que irá ser o futuro da programação (nem que seja pelo facto de ser semelhante a C e Java, o que facilita a migração dessas tecnologias para .NET).
Neste primeiro post vou-vos falar do básico e das bases da linguagem C#. Vai ser uma revisão rápida e concisa porque o objectivo destes posts não será falar do básico mas sim do intermédio ao avançado.
O C# é uma linguagem Orientada a Objectos que permite herança, polimorfismo, encapsulamento, interfaces… etc.
- Orientada a objectos: É um paradigma de programação que usa objectos (instâncias de classes) que interagem entre si. Cada classe (como serão tratadas a partir daqui) determina o comportamento (definido nos métodos) e estados possíveis (atributos) dos seus objectos, assim como o relacionamento com outros objectos.
- Herança: Permite que as classes filhas (derivadas de outra classe) herdem e /ou estendam as funcionalidades da classe mãe. Como os seus métodos e atributos.
Atenção que o C# apenas permite uma herança de classe mãe mas permite herança de múltiplos interfaces.
- Polimorfismo: é o princípio pelo qual duas ou mais classes derivadas de uma mesma classe mãe podem invocar métodos que têm a mesma assinatura (lista de parâmetros e retorno) mas comportamentos distintos que são definidos na classe filha.
- Encapsulamento: consiste na separação de aspectos internos e externos de um objecto. Este mecanismo é utilizado amplamente para impedir o acesso directo ao estado de um objecto (aos seus atributos), disponibilizando externamente apenas os métodos que alteram estes estados. Vamos falar mais á frente de propriedades.
- Interfaces: é um contrato entre a classe e o mundo externo. Quando uma classe implementa uma interface, ela está comprometida (obrigada) a fornecer o comportamento especificado pela interface.
Depois desta explicação genérica de uma linguagem de programação orientada a objectos vou-vos falar dos tipos específicos de C#. O c# divide-se em dois tipos que são muito importantes para o que queremos atingir, existem os tipos de valor e os referência.
Tipos valor: estas variáveis contem os seus dados directamente, cada variável contém a sua cópia dos dados. Estas variáveis são guardadas na Stack (memoria mais rápida) e são automaticamente destruídas quando saem do scope (bloco de execução). Ex: Todos os simples (int, byte, short, double, bool, etc… ) e Structs e enumerators.
Tipos referência: Estas variáveis não contem os dados directamente mas apontadores para eles. Duas variáveis distintas podem apontar para os mesmos dados. Estes dados são guardados na heap (mais lenta) e são destruídos num processo chamado garbage collector. Ex: String, Arrays, Classes, Delegates.
Static vs Instance: Um método static não pode ser instanciado, pode ser acedido directamente sem usar a palavra new e só permitem ter dentro do seu bloco membros estáticos por ex: a função String tem o método estático Format.
Os métodos instance têm obrigatoriamente de ser instanciados com a palavra new por ex: MinhaClasse nome = new MinhaClasse(); Os métodos instanciados podem conter variáveis estáticas.
Um bom exemplo seria colocar uma variável global a classe estática e incrementar essa variável sempre que se instanciasse a classe, assim teríamos um contador de quantas vezes instanciamos a classe.
• Mãos á obra
Declarar variáveis: As variáveis em c# são declaradas como “tipo nome”. Atenção que o c# é case sensitive.
int numero; string texto;
Arrays: Os arrays como vimos em cima são tipos de referencia logo só guardam uma copia do seu valor. E são “zero indexed” começam no zero.
int[] numero; int[] numero = new int[10]; // array com 10 elementos int[,] numero = new int[5,4]; // array multidimensional 2 dimensões neste caso. Int[][] numero = new [5][4]; // array de arrays ou jagedd array.
Outros exemplos de inicialização de arrays:
int[] numero = new int[] {1, 2, 3, 4, 5}; //array com 5 elementos int string[] nome = new string{“ola”,”pplware”}; // array com 2 elementos string int[,] numeros = new int[,] { {1, 2}, {3, 4}, {5, 6} }; // array multidimensional
Instanciar objectos: para instanciar um objecto utiliza-se o nome da classe e depois o nome que queremos dar ao objecto.
NomeClasse meuNome = new NomeClasse();
Isto funciona assim se a classe tiver o default constructor. Caso tenha mais construtores poderia ficar assim:
NomeClasse meuNome = new NomeClasse(parametro);
O parâmetro é uma variável que estou a passar ao construtor da classe NomeClasse.
Quanto ás keywords, loops, etc e para não me vou alongar mais vejam este documento que tem lá tudo acerca disso e até uma comparação entre c# e vb.Net.
Download: CheatSheet
• Primeiro programa: O compilador que vou usar para os meus exemplos vai ser o VisualStudio, a minha versão é a Professional que me foi dada pela aliança académica, se não tiverem podem usar a versão Express. Pode ser o 2005 ou 2008.
O fantástico HelloWorld.
Abram o visual studio e façam File- New-Project, escolham console aplication (ainda não vamos para forms hoje).
No topo do projecto estão as importações de Namespaces que vamos utilizar neste projecto: using System; Permite usar a Classe Console directamente se não tínhamos de escrever System.Console sempre que quiséssemos aceder a essa classe.
Depois vemos o Namespace do projecto serve para identificar o nosso projecto. Mais tarde veremos a sua utilidade.
Temos a nossa class e lá dentro o método Main, todos os projectos em C# começam no método Main, em Windows forms não o vemos porque começamos com a form que é uma partial class que por trás contem o Main. (Depois vemos isto tudo).
O Main é sempre static e pode ou não levar parâmetros neste caso recebemos um array de strings com o nome args string[] args (mais abaixo vamos utiliza-lo).
Num projecto deste género nós temos acesso á classe Console e com ela podemos escrever e ler na consola do Dos. Agora a única coisa que temos de fazer é escrever Console.WriteLine("Hello World"); Para podermos ver alguma coisa convém também escrever Console.ReadLine(); Assim o processo para e fica á espera de um input nosso. Agora carreguem no f5 e vejam o vosso hello world. Simples não?! Mas pouco interessante.
Vamos a um mais interessante que tal uma calculadora? Esta calculadora poderia ser feita dentro do programa a pedir valores mas como quero mostrar os argumentos vai ser um pouco diferente, como eram antigamente os comandos de MS-DOS.
Usando o mesmo projecto limpem o código Console.WriteLine("Hello World");
int a=int.Parse(args[0]); criamos uma varivel inteira que recebe o primeiro valor que vamos escrever e converte-o para inteiro caso contrario haveria um erro a dizer que não pode converter string em inteiro. int b = int.Parse(args[2]); fazemos o mesmo para o terceiro parâmetro int c=0; e outra variável inteira que vai conter o resultado final e é inicializada a 0.
Depois fazemos um switch com o valor que esta na segunda posição ou seja o operador, e vamos verificar (lembrem-se que este valor é uma string) qual é o texto do operador quando corresponder fazemos a operação.
Os switch tem de ter sempre um break para parar a execução em todos os blocos case. switch (args[1]) { case "+": c = a + b; break; case "-": c = a - b; break; case "*": c = a * b; break; case "/": c = a / b; break; default: break; } No fim mostramos o valor Console.WriteLine(c.ToString()); Como o “c” é uma variavel inteira temos de utilizar o método estático ToString() para a converter em string.
Para correr o programa precisamos de abrir a linha de comandos MS-DOS e ir ate á directoria onde esta o ficheiro executável, no meu caso está nos meus documentos C:\Documents and Settings\adminpclocal\My Documents\Visual Studio 2005\Projects\HelloWorld\HelloWorld\bin\Debug
Depois corrar o executavel no meu caso HelloWorld.exe e escrevam os valores e operação á frente por ex:
HelloWorld.exe 5 * 2 (tem de ter espaços a separar) Carrega-se no enter e vê-se o resultado.
E pronto já tem uma calculadora, arcaica é certo mas ainda estamos no começo.
Conclusão: Espero que tenham gostado do post este como disse no inicio foi básico mas vai ser útil para o futuro. No próximo post já vai ser mais puxado e vamos começar a trabalhar com Windows forms, vamos fazer uma classe uma struct e ver as diferenças, uns eventos, aceder e manipular ficheiros e claro uns programinhas.
Então obrigado a todos e ate breve.
Este artigo tem mais de um ano
Bom tutorial! Espero que continuem.
http://www.nyzux.net/
Tem piada, a última vez que tive de mexer em C foi quando andava a estudar. Já lá vão… 15 anos, para aí. Desde então, nunca me foi necessária. Agora, volta a ser o “futuro”? Bem, a verdade é que toda a gente acha que a “sua” linguagem é o futuro, não?
A ideia com que fico é, no entanto, que se está a esquecer uma coisa muito importante e que, durante algum tempo norteou os criadores: facilidade de utilização. Quanto mais alta a linguagem, melhor. Dá-me a impressão de que, nalguns aspectos, estamos a andar para trás…
http://aospapeis.blogspot.com
Bom dia,
Desde já gostaria de apresentar os parabéns pelo excelente post em que começa por tocar nos pontos essenciais da programação em c#/.net sem estas noções ditas “basicas” no dia a dia de um programador diria que o codigo estaria muito mal elaborado.
Terei de admintir que quando vejo algo sobre c# neste site espero tutoriais para quem se inicia na programação, mas definitivamente este post é para quem já tem algumas bases e procura consolidalas.
Em termos de conteudos esta bastante bom pois tocaste em varios pontos sem aprofundar nenhum (espero que aprofundes todos um por um nos proximos posts e veremos daquilo que serás capaz =) ).
@aospapéis
C não é o mesmo que C#
@Ecrã Azul
Claro que não, tal como o C++ não era ANSI C, o visual C não era C++, etc.
Mas, também, nenhuma linguagem é, por exemplo, ColdFusion, essa sim, algo de elevado nível e extrema facilidade de utilização.
http://aospapeis.blogspot.com
@aospapéis
E ainda que te estejas a referir ao C# (que duvido) as linguas sofrem evoluçoes.. e C# com os desenvolvimentos das frameworks por trás tem sofrido muitas e boas alteraçoes.. está-se a tornar numa linguagem bastante puderosa.
@aospapeis
Essa é a parte interessante do C#: é uma linguagem que se pode considerar de alto nível, mas ainda assim não deixamos de ter a possibilidade de aceder a funcionalidades de baixo nível, normalmente para melhoramentos em questões de performance!
Excelente iniciativa! Continuação do bom trabalho!
Bom tutorial e espero que continues.
No entanto, não considero que o C# será o “futuro” 🙂 Mas nunca se sabe.
@ Bruno Bernardino
A titulo de curiosidade que consideras tu a linguagem do futuro? É que realmente juntamente com o java em penso que C# possa vir a ser a linguagem do futuro.
Java pois tem aquela excelente funcionalidade de ser multiplatadormas e estar a tornar-se uma linguagem bastante rubusta e polivalente.
C# pois tens uma sintaxe bastante acessivel.. é bastente rubusta.. ainda nao tem algumas funcionalidades que o c++ tem mas para la caminha e tem um framework super puderosa por trás.
Obrigado a todos pelos comentários.
E sim vou continuar e os próximos serão em formato video, que podem ver por streaming e podem fazer o download com melhor qualidade. O próximo já vai ser mais interessante com Windows Forms como diz a conclusão.
@José Romão
Também pensei em fazer um tutorial mas virado para iniciantes, mas achei que ninguem irá aprender de inicio seguindo os posts, sendo assim estes já requerem um certo conhecimento, não exclusivo desta linguagem mas de lógica de programação.
@aospapeis
Estás um pouco confuso com os conceitos.O C# não tem nada a ver com C em termos de linguagem, de sintaxe tem porque caminhamos para a unificação das linguagens de programação, ninguem quer saber 30 tipos de sintaxe para programar. O C# foi desenhado em 2000 para “substituir” o VB como linguagem principal do .Net e neste ano vai ser lançada a versão 4.0 que irá ser ainda melhor.
Cumprimentos a todos.
@José Romão
Honestamente nunca pensei muito sobre o assunto, mas Java tem possibilidades de ser uma das linguagens mais usadas mesmo pela sua interoperabilidade. No entanto, não gostava de ver esse cenário a menos que se tornasse uma linguagem aberta e não proprietária.
Acho que não existe algo como “a linguagem do futuro” porque nunca se verá websites e aplicações web a serem desenvolvidas com Java como linguagem preferencial, nem se usará o PHP para desenvolver aplicações desktop (se bem que já existe suporte para gtk e a ser melhorado, é uma hipótese que eu consideraria de bom grado), como tal, pode existir uma ou outra linguagem de programação predominante para um “ramo”, mas nunca uma “supra-sumo” 🙂
Penso que o C# é proprietário, certo? Como tal, não merece a minha atenção a nível de programação, só se me pagarem bem é que programo em linguagens de programação proprietárias 🙂
É só uma opinião pessoal 😉
@ Bruno Bernardino
Bruno, estavamos então a falar de coisas diferentes sendo que tu estavas a entender linguagens do futuro como linguagens nao proprietárias e eu simplesmente estava a pensar em termos de todas as linguagens.. talvez devesse substituir “linguagem do futuro” por “linguagem dominante” e ainda que seja linguagem proprietária tanto uma como a outra sao as opções que as empresas procuram pois oferecem estabilidade segurança e acima de tudo uma grande comunidade por tras que possibilida o desenvolvimento.
As empresas optam muitas vezes pelo java visto que lhes permite ter uma aplicação em linux o que significa pagar muitooooooo menos dinheiro em licensas. O C# é simplesmente uma linguagem bastante forte, na minha opinião facil de se programar. e volto a frizar a importancia da framework..
Abraço.
@Todos
A questão de portabilidade não é para aqui chamada! Estamos a falar de “linguagens de programação”, logo é tudo uma questão de existirem “VM’s” como no Java para cada plataforma (Windows, Linux, Mac OS, etc.).
O pessoal do Linux de certeza que sabe bem o que é o Mono… 😉
@João Romão
Não, confundiste o meu desejo com a minha opinião 🙂
Eu gostava que a linguagem do futuro e/ou dominante fosse Java apenas se fosse livre e não proprietária como é.
Eu penso que a linguagem dominante do futuro no ramo de desenvolvimento para desktop seja Java.
A nível de desenvolvimento Web, penso que o PHP será o futuro (se é que não é já a linguagem dominante), pois não vejo as mesmas potencialidades no ASP, e se houver concorrentes será a nível de Ruby, etc. (muito semelhantes).
Eu acho que as aplicações Web irão ter mais saída e sucesso do que aplicações para desktop no futuro, logo as linguagens dominantes deverão ser as de desenvolvimento Web.
Logo, na minha opinião a linguagem dominante do futuro será o PHP 🙂
@Pedro Lamas
Nem todas as linguagens são “feitas” a pensar nas VM’s como foi o Java (e na minha opinião foi isso que lhe deu o sucesso), como tal, a questão da portabilidade e interoperabilidade é sempre chamada!
@Bruno Bernardino
Permite-me só mandar mais uma acha para a fogueira! 🙂
Não devia ser a linguagem que é pensada para ser portável, mas os sistemas de interpretação/compilação, não achas? Era antes a este ponto que eu pretendia chegar! 🙂
@Pedro Lamas
Quando a conversa é civilizada, a fogueira só aquece, nunca explode, como tal, podes atirar as achas que quiseres, que só fica mais “quentinho” 😉
Concordo perfeitamente com a tua opinião, mas actualmente não é o que se verifica 🙂
“Qui-ça”, o futuro não estará nessa forma de pensar!
Por muito que neguem a microsoft esta a fazer um optimo trabalho com a plataforma .net, isso ninguem o pode negar, e a facilidade de criar jogos com esta linguaagem com o XNA, e de louvar.
O C# e uma linguagem poderosissima, e verdade nao da para linux nativamente, mas o projecto Mono ta a fazer grandes progressos. e @Bruno tu nao gostas de programar numa linguagem proprietaria, mas pensa ao elas que dao mais garantias as empresas, e nao podes dizer que elas nao sao boas, de facto sao mesmo mt boas…
@Spulva
A nível de garantias não concordo, é a mesma coisa que qualquer outro software open-source.
A nível de serem boas, claro que não digo que não são boas, se achasse que não eram boas, nem as punha em causa 🙂
@Bruno
terei de concordar contigo no ponto de vista do java provavelmente vai-se revelar mais que o C# contudo em termos de syntax sao praticamente identicas ainda assim diria que vai ser lado a lado com o C#. . (novamente é so a minha opiniao). Uma linguagem é a alternativa da outra..
Quanto ao php sinceramente penso que ja dominou mais.. ultimamente vejo o asp a revelar-se mais contudo php nunca deixou de ser uma optima opção.
Bom trabalho Sr.º Eng.º Henrique Graça…
…estou cá à espera do próximo tutorial 😉
Abraço
Só uma coisa:
um array de [10] tem 11 posições, a 0 1 2 3 4 5 6 7 8 9 e 10….
http://www.raymond.cc/blog/archives/2009/02/23/impressive-zemana-antilogger-proactive-protection-free-1-year-license/
Porquê o C# ser a linguagem do futuro?
Porque tem uma poderosa framework por tras,tem um ide fantastico,Visual Studio e em termos de performance é superior ao java,para n falar de outros aspectos muito mais tecnicos.
Em relação ao php vs asp.net ja programei nos dois e posso dizer k o asp.net neste momento ta a frente do php e mais uma vez devido a fantastica framework.
Finalmente em relacao ao tutorial,a parte teorica estava mt boa, kt a parte pratica penso k seja bom para comecar.
@Pedroso
Errado meu amigo, isso não acontece no C#, mas sim no C e talvez no Java (já não me recorda!) 😉
Logo, um array de [10] vai do 0 a 9
@Shogun
Não deves confundir as potencialidades de uma framework / ide com a as potencialidades da linguagem de programação.
Existem muito provavelmente mais e melhores frameworks e ide’s para ASP do que para PHP, mas PHP é mais poderoso, não duvides disso.
Posso começar pelo facto de PHP funcionar em Windows e Linux, e ASP só funcionar em Windows.
Outro facto é que o ASP está demasiado “integrado” no Sistema Operativo, e enquanto uns acham isso fantástico, acho que isso é muito mau porque quando existem falhas de segurança, são potencialmente mais perigosas, e essa integração não traz nada que não seja possível fazer com PHP.
Para além de, em casos específicos (já fiz isso), é muito vantajoso alterar o código fonte do PHP e recompilá-lo de forma a interagir de uma forma mais vantajosa consoante o que necessitas… com ASP… sendo proprietário não há código para ninguém. 🙂 Ainda achas que o ASP está à frente do PHP? Ou achas que é mais fácil programar em ASP (aí digo-te que sim, é muito mais fácil com as frameworks e IDE’s que existem programar em ASP)? Não acho que isso queira dizer que é melhor nem pior, de todo.
@Pedroso
como o Pedro lamas referiu e mto bem ao iniciares array de [10] tens 10 posiçoes o que querias dizer era se fizeres array index[10] estarás a acerder á 11º posição
@Bruno eu concordo com alguns pontos que disseste relativamente ao post do Shogun mas sou obrigado em concordar com ele em outros. a Framework faz toda a diferença visto dar-te um acesso quase que ilimitado a tudo. Onde tens razão é no facto de ser um pau de dois bicos visto que ela tambem te limita ao seu puder. Mas casos raros sao aqueles em que o que ela nos oferece nao é o suficiente.
Ia para responder ao Pedroso, mas o Pedro Lamas e o José Romão anteciparam-se e muito bem. 🙂
Obrigado Henry, vemo-nos no 2º semestre 🙂
Boa iniciativa, no entanto acho que este tópico não tem um público alvo bem definido. Para iniciantes não serve de muito porque ainda não tem os conceitos de OO bem definidos e não é um ou mais posts que os vai conseguir explicar. Para utilizadores intermédios/avançados estes conceitos estão mais que claros e este e próximos tutoriais não irão ajudar muito. Parece-me que o objectivo não é explicar a linguagem C# mas sim mostrar algumas coisas interessantes da framework .net 3.5, porque não começar logo a explicar alguns conceitos engraçados da linguagem/framework, sei lá, por exemplo, partial, delegates, etc…? Ou alguns padrões (code patterns) de desenvolvimento? ou mesmo o uso do LINQ…
@ Pedro Lamas
Nem no C nem no Java. Um array de 10 posições, vai do índice 0 ao 9, tanto em C, C# ou Java.
A diferença é que em C# ou em Java, a VM, vai gerar uma excepção quando tentares aceder a uma posição inexistente, mas já em C não. Podes é usar ferramentas como o Eletric Fence ou o Valgrind para detectar esses bugs…
cumps
@mm
Compreendo a tua posição e o problema foi mesmo esse, não queria que este post fosse para iniciantes, nem que fosse muito avançado, porque o objectivo não é somente abranger os que percebem mas sim todos aqueles que gostavam de aprender e que ja tenham algumas noções.
Mais para a frente julgo que daqui a 3 posts ja vou falar de delegates, generics, serialization, ou seja tudo coisas mais avançadas.
Mas até lá vou relembrando coisas aos que já sabem e vou criando interesse nos que gostavam de saber mais.
Mais uma vez agradeço a tua opinião
@Henrique Graça
Porreiro… é de louvar que haja pessoas que gastam o seu tempo pessoal a partilhar o seu conhecimento gratuitamente.
Continua o bom trabalho, cumprimentos
Grande post… Para programadores iniciantes, como eu, estes tutoriais são uma maravilha! 🙂
Obrigado,
——–
http://www.best-cine.com/
@Pedro Silva
A pressa de escrever levou-me a cometer um grande erro: queria referir-me ao antigo Visual Basic 6.0, e não ao C como muito bem referiste…
http://msdn.microsoft.com/en-us/library/5c1seyzc(VS.80).aspx
Boa tarde,
ando de volta do oop e ando a procura de um exemplo pratico para classes abstractas versus interfaces e polimorfismo.
Podia me esclarecer sobre o assunto?
Um abraço, Francisco Lacerda
@mm
O uso do link tal como lambda expressions poderia ser um grande tema.Concordo plenamente cnt.
Para kem n sabe o k e link e lambda expressions vou deixar aki um exemplo mt simples em C#.
—————————————————————————————————————-
var coleccao = new List();
coleccao.add(“abcde”);
coleccao.add(“cdefgh”);
coleccao.add(“pplware”);
// Lambda expression – Devolve uma coleccao de valores que contenham a letra e
var resultLambda = coleccao.where(c => c.Contains(“e”));
// Linq – Devolve uma coleccao de valores que contenham a letra e
var resultLinq = from i in coleccao where i.Contains(“e”) select i;
—————————————————————————————————————-
Ok pode n parecer fantastico a primeira vista, mas agora imaginem k tem um entity model (search in google) e kerem fazer uma peskisa a uma base de dados?Facilita imenso o trabalho em vez de andarem a fazer transact sql.
Nota: Caso alg detecte erros no meu codigo e explicacao ou melhoramentos k possam ser feitos serao sp bem vindos.
“Um método static não pode ser instanciado” e “Os métodos instance têm obrigatoriamente de ser instanciados” – Henrique, anda por aí alguma confusão não? Os métodos não se instanciam, invocam-se. O que deveria ter sido dito é que para se invocar um método estático não é necessário instanciar a classe que o encapsula e que para invocar um método de instância só é possível fazê-lo através de uma instância do tipo do objecto que encapsula o método.
Não obstante deste pormenor louva-se a partilha de conhecimento em prol da comunidade. Há que incentivar esta disponibilidade!
@ Franciso Lacerda.
isso dava para muitos posts mas para resumir e acho que se já existe não é necessário reinventar a roda segue este link que explica muito bem esses conceitos.
http://www.codeproject.com/KB/cs/abstractsvsinterfaces.aspx
@David Vitorino
Bem visto.Problema na escolha de palavras. Por isso é que os seguintes vão ser em video 🙂
@Shogun
Não queria mas já estou a ver que vou ter de chegar até á framework 3. Mas está certo e é para lá que caminhamos logo no tutorial 4 vou falar sobre Linq e anonymous delegates e types aka (LambdaExpressions).
WebCasts sim gosto disso se tiveres jeitinho penso k pode ser mt mais explicito do k por texto 😉 e olha framework 3.5 ta mt poderosa, ainda ontem tive a explicar umas cenas a um amigo com o entity model.
Exemplo das possibilidades da linguagem C#…Enjoy…!!!
http://insentient.net/
Tiobe – a lista da 25 linguagens de programação mais populares. É bastante citada.
A popularidade de cada linguagem é a frequência estatística das correspondentes “querys” em motores de busca. Se houver mais pesquisas por “java”, é esta a linguagem mais popular, etc. Fazem o apuramento mês a mês e determinam tendências anuais. Acho que tem interesse.
A C# era 8.ª em popularidade em Fevereiro de 2007 e passou para 6.ª em Fevereiro de 2008.
http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
….A C# era 8.ª em popularidade em Fevereiro de 2008 (e não 2007) e passou para 6.ª em Fevereiro de 2009 (e não 2008) … isto ao fim do dia já não dá mais 🙁
Muito boa a iniciativa de ajudar o pessoal a desenvolver em C#
C# é muito bom, a facilidade de desenvolver é incrivel no ambiente .Net
Parabéns continue.
Cada um tem sua linguagem preferida, então opniões do tipo essa ou aquela é a melhor vai trazer alguns comentarios meio inflamados(só uma dica).
Só pergunto se o PPLWARE tem autorização para usar esta imagem no post, visto que esta faz parte da capa de um livro da O’Reilly (Head First C#) !!
Pedro tenho sim. Queres que te reenvie o mail do pedido e da resposta?
@Pedro
Aqui não se brinca 🙂
Por acaso até nem acho piada à imagem. Trocava-a por esta</a
Para quem não percebe absolutamente nada de programação (tal como eu), desde já quero te agradeçer vivamente pela oportunidade que me estás a dar em tentar perceber este tipo de linguagem informática e pela forma de diálogo (“Linguagem” lá está!) que tens estado a utilizar. Muito bom mesmo e foi copiado sem qualquer problema para a minha cabeça.
Ao contrário dos comentários do pessoal, que não percebi “patavina” da maior parte! (ainda bem que somos todos diferentes ;-))
Continua com o belíssimo trabalho.
Abraço
@Lynx
Muito obrigado pelo teu comentário.
O próximo tutorial já vai ser mais puxado mas vai ser muito interessante.
@Henrique Graça,
Vê se no proximo semestre me ajudas a fazer um trabalho melhor, já que pelo que vejo dominas esta linguagem.
Fica bem.
Abraço
Uma pequena sugestão: usar um plugin para o Live Writer (estou a supôr que escreveste este post usando o WLW) para a parte do código, pois torna-se muito mais legível.
Acho que há uma grande confusão de ideias sobre qual o público alvo deste tipo de tutorias. Se for para iniciados então era necessário dar mais algumas bases sobre o que é OOP, design patterns, best practices, etc. Só então partir para detalhes de implementação da linguagem C# e a framework .NET.
Com respeito à discussão sobre Java vs C# mando aqui a minha “acha para a fogueira”: O C# é a mais completa e que tem mais margem de crescimento. Eis a razão: desenhada de origem para ser usada em cima do CLR, que em termos comparativos é semelhante à JVM (embora não sendo igual). Assim como em Java temos os bytecodes, no CLR temos o IL. Mas há uma pequena/grande diferença. No Java, quando lançado há mais de 10 anos o slogan era: “one language, everywhere”. Com o CLR temos: “multiple language, everywhere”. Isto quer dizer que com o CLR eu posso programar em qualquer linguagem suportada (VB.NET, C#, IronRuby, F#, J#, …). A vantagem disto é que posso compôr o meu projecto de vários assemblies e que podem ser, no limite, desenvolvidos em linguagens diferentes, tirando partido das vantagens de cada uma delas.
Espero ter sido claro 🙂
@Rodrigo Guerreiro
Ora aí está um excelente ponto de vista!!
(P.S.: Aproveito para mandar cumprimentos para o T. Pascoal, espero que as vossas sessões no DevDays tenham corrido bem melhor que a minha!)
@Pedro Lamas
Serão entregues 😉
gostei do tutorial, espero que continuem
abç
pessoal isto está me a dar erro, quando efectuo o debug, diz “index out of range”
que faco.