PplWare Mobile

Tutorial C# – Nova temporada

                                    
                                

Este artigo tem mais de um ano


Autor: Pplware


  1. aospapéis says:

    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

  2. José Romão says:

    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 =) ).

  3. Ecrã Azul says:

    @aospapéis

    C não é o mesmo que C#

  4. aospapéis says:

    @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

  5. José Romão says:

    @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.

  6. Pedro Lamas says:

    @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!

  7. Excelente iniciativa! Continuação do bom trabalho!

  8. Bom tutorial e espero que continues.

    No entanto, não considero que o C# será o “futuro” 🙂 Mas nunca se sabe.

  9. José Romão says:

    @ 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.

  10. Henrique Graça says:

    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.

  11. @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 😉

  12. José Romão says:

    @ 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.

  13. Pedro Lamas says:

    @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… 😉

  14. @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!

  15. Pedro Lamas says:

    @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! 🙂

  16. @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!

  17. Spulva says:

    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…

  18. @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 🙂

  19. José Romão says:

    @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.

  20. Henry says:

    Bom trabalho Sr.º Eng.º Henrique Graça…

    …estou cá à espera do próximo tutorial 😉

    Abraço

  21. Pedroso says:

    Só uma coisa:

    um array de [10] tem 11 posições, a 0 1 2 3 4 5 6 7 8 9 e 10….

  22. Shogun says:

    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.

  23. Pedro Lamas says:

    @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

  24. @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.

  25. José Romão says:

    @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.

  26. Henrique Graça says:

    Ia para responder ao Pedroso, mas o Pedro Lamas e o José Romão anteciparam-se e muito bem. 🙂

  27. Henrique Graça says:

    Obrigado Henry, vemo-nos no 2º semestre 🙂

  28. mm says:

    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…

  29. Pedro Silva says:

    @ 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

  30. Henrique Graça says:

    @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

  31. mm says:

    @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

  32. BESTCINE says:

    Grande post… Para programadores iniciantes, como eu, estes tutoriais são uma maravilha! 🙂

    Obrigado,

    ——–

    http://www.best-cine.com/

  33. Pedro Lamas says:

    @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

  34. Francisco Lacerda says:

    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

  35. Shogun says:

    @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.

  36. David Vitorino says:

    “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!

  37. Henrique Graça says:

    @ 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).

  38. Shogun says:

    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.

  39. William Sarto says:

    Exemplo das possibilidades da linguagem C#…Enjoy…!!!

    http://insentient.net/

  40. aver says:

    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

  41. aver says:

    ….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 🙁

  42. Filipe says:

    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).

  43. Pedro says:

    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#) !!

  44. Vítor M. says:

    Pedro tenho sim. Queres que te reenvie o mail do pedido e da resposta?

  45. @Pedro

    Aqui não se brinca 🙂

  46. aver says:

    Por acaso até nem acho piada à imagem. Trocava-a por esta</a

  47. Lynx says:

    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

  48. Henrique Graça says:

    @Lynx
    Muito obrigado pelo teu comentário.
    O próximo tutorial já vai ser mais puxado mas vai ser muito interessante.

  49. David Lourenço says:

    @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

  50. Rodrigo G. says:

    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 🙂

  51. Pedro Lamas says:

    @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!)

  52. Rodrigo G. says:

    @Pedro Lamas

    Serão entregues 😉

  53. josemar castro says:

    gostei do tutorial, espero que continuem

    abç

  54. Filipe Silva says:

    pessoal isto está me a dar erro, quando efectuo o debug, diz “index out of range”
    que faco.

Deixe um comentário

O seu endereço de email não será publicado.

You may use these HTML tags and attributes: <a href="" title="" rel=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

Aviso: Todo e qualquer texto publicado na internet através deste sistema não reflete, necessariamente, a opinião deste site ou do(s) seu(s) autor(es). Os comentários publicados através deste sistema são de exclusiva e integral responsabilidade e autoria dos leitores que dele fizerem uso. A administração deste site reserva-se, desde já, no direito de excluir comentários e textos que julgar ofensivos, difamatórios, caluniosos, preconceituosos ou de alguma forma prejudiciais a terceiros. Textos de caráter promocional ou inseridos no sistema sem a devida identificação do seu autor (nome completo e endereço válido de email) também poderão ser excluídos.