Você está na página 1de 17

Curso C# - Básico

José Carlos Macoratti


http://www.macoratti.net
MVP
A criação do C#
• Criação da linguagem C por Dennis Ritchie nos anos 60 (DEC PDP-11 usando Unix, Linguagem
Estruturada, imperativa , procedural)
• Criação da linguagem C++ por Bjarne Stroustrup em 1979 (Laboratórios Bell, Orientada a Objetos)
• Criação da linguagem Java em 1991 por James Gosling (Oak, Sun Microsystems)
• Java é uma linguagem estruturada com suporte a orientação a objetos com sintaxe e filosofia
derivada do C++;
• Com o advento da Internet Java resolveu o problema da portabilidade com criação de código p/
rodar em múltiplas plataformas ; (O foco inicial era por linguagem independente para rodar em dispositivos
embutidos)
• Java alcançava a portabilidade traduzindo o código de um programa-fonte em uma linguagem
intermediária chamada bytecode;
• C# criada por Anders Hejlsberg em 2000 nos laboratórios da Microsoft.
• Interoperabilidade entre linguagens, também chamado de linguagem mista de programação.
Habilidade para o código produzido por uma linguagem para trabalhar facilmente com o código
produzido por um outra.
• (A Interoperabilidade entre linguagens é necessária para a criação de grandes sistemas de software distribuídos.)
• Maior integração com o sistema operacional Windows.
• C# esta diretamente relacionada com as linguagens C, C++ e Java;
C, C++ , Java e C#
• Relacionamento entre as principais linguagens usadas atualmente:
A evolução do C#
• Desde a sua versão 1.0 original, a linguagem C# tem evoluído rapidamente;
• A versão 1.1 continha muitos pequenos ajustes, mas não acrescentou nenhuma grande características.
• A versão 2.0 foi um divisor de águas no ciclo de vida do C#, pois acrescentou muitos recursos novos, tais como Generics,
tipos parciais e métodos anônimos, que, fundamentalmente, expandiu o escopo, poder, alcance e da linguagem.
1. Generics e Iterators
2. Tipos parciais e tipos anuláveis
3. Métodos anônimos e qualificador de apelidos de namespace
4. Classes estáticas e possibilidade de definir diferentes níveis de acesso nos métodos de leitura e escrita de uma
propriedade
• A versão 3.0 do C# novamente trouxe grandes novidades como : expressões lambdas, LINQ, métodos de extensão, e
variáveis implícitas, entre outras:
1. A versão 3.0 do C# novamente trouxe grandes novidades como : expressões lambdas, LINQ, métodos de extensão, e variáveis
implícitas, entre outras:
2. Tipos implícitos em variáveis locais
3. Métodos de extensão
4. Tipos anônimos
5. Iniciadores de objetos
6. Iniciadores de coleções
7. Métodos parciais
8. Propriedades automáticas
9. Expressões lambda
10. Árvores de expressão
11. Expressões de consulta
12. LINQ (Language INtegrated Query)
A evolução do C#
• A versão atual é a 4.0 que também acrescenta novos recursos como os argumentos nomeados e os
argumentos opcionais e o tipos dinâmicos;

1. Parâmetros opcionais e nomeados


2. Interoperabilidade com COM
3. Objetos com tipagem dinâmica
4. Covariância e contravariância

• Os argumentos nomeados permitem ligar um argumento com um parâmetro pelo nome.


Argumentos opcionais permitem uma maneira de especificar um argumento padrão para um
parâmetro. Os tipos dinâmicos são usados para declarar os objetos que cujo tipo é verificado em
tempo de execução, ao invés de tempo de compilação.

• Obs: A versão 5.0 esta prestes a ser lançada oficialmente em breve :

1. Task-based Asynchronous Pattern (TAP)


2. Versão assíncrona via TAP
3. Funções assíncronas
4. Windows Runtime
5. async e await
A .NET Framework
• C# esta intimamente relacionada com o seu ambiente de execução : a .NET Framework;
• A . NET Framework define um ambiente que apóia o desenvolvimento e a execução de aplicações
baseadas em componentes altamente distribuída.
• Ele permite que diferentes linguagens trabalhem em conjunto e fornece a segurança, a
portabilidade do programa, e um modelo de programação comum para a plataforma Windows.
• Define duas entidades importantes: CLR e .NET Class Library;
• A Common Language Runtime (CLR) é quem gerencia a execução do seu programa. Juntamente
com outros benefícios, a CLR é a parte do. NET Framework que permite que programas sejam
portados além de suportar a programação mista, e prever a execução segura.
• A .NET class Library dá ao seu programa o acesso ao ambiente de execução. Por exemplo, se você
deseja executar operações de I/O, como a exibição de algo na tela, você irá usar a biblioteca de
classes. NET para fazê-lo.
• Esta biblioteca de classes é organizada hierarquicamente em uma estrutura conhecida como
namespace. Ao desenvolver um componente de software reusável, este precisa ser estruturado em
um namespace para que possa ser usado a partir de um outro programa externo.
Arquitetura .NET
Arquitetura .NET
• A MSIL – ou simplesmente IL – é a linguagem intermediária para qual é
interpretado qualquer programa .NET, independente da linguagem em
que este for escrito. (C# , VB .NET , F#, etc.)

• Essa tradução é feita para código intermediário (como em JAVA com os byte
codes) sintaticamente expresso na IL.

• Por sua vez, qualquer linguagem .NET compatível, na hora da compilação,


gerará código IL e não código assembly específico da arquitetura do
processador onde a compilação do programa é efetuada, conforme
aconteceria em C++ por exemplo.

• E por que isso?

• Isso acontece para garantir duas coisas: a independência da linguagem e a


independência da plataforma (arquitetura do processador)
Como a CLR atua
• A CLR gerencia a execução de código. NET.
• - Quando você compila um programa C# a saída do compilador não é o código executável.
• - É um arquivo que contém um tipo especial de pseudocódigo chamado Microsoft Intermediate
Language (MSIL).
• - A MSIL define um conjunto de instruções portáteis que são independentes de qualquer CPU
específica.
• - Em essência, a MSIL define uma linguagem de montagem portátil.
• - Embora a MSIL seja semelhante ao conceito de bytecode Java, os dois não são os mesmos.
• - É trabalho da CLR traduzir o código intermediário em código executável, quando um programa é
executado.
• - Assim, qualquer programa compilado para MSIL pode ser executado em qualquer ambiente no
qual a CLR é implementada.
• - A MSIL é transformada em código executável usando um compilador JIT que representa o
processo "Just-In-Time".:. - Quando um programa NET é executado, o CLR ativa o compilador JIT.
• - O compilador JIT converte MSIL em código nativo sob demanda como cada parte do seu
programa.
• - Assim, o programa C#, na verdade é executado como código nativo, mesmo que inicialmente seja
compilado em MSIL.
• - Isso significa que seu programa é executado quase tão rápido quanto seria se tivesse sido
compilado para código nativo em primeiro lugar mas ganha portabilidade;
C# - Compilação e Execução
Processo de execução
Quando usar C#
• Podemos usar C# para o desenvolvimento dos seguintes tipo de
aplicações:
• Aplicações clientes de front end, smart clients, consumir webservices
• Aplicações de middleware: Web services, aplicações do lado
servidor(ASP.NET, SOAP, Web Services e XML)
• Aplicações para internet (ASP .NET, AJAX, Jquery)
• Aplicações gráficas: via a biblioteca GDI+
• Acesso a bancos de dados via ADO.NET: ADO.NET
• Acesso a banco de dadaos com utilização de ORM : Entity
Framework e Nhibernate;
• Aplicações multitarefas;
• Aplicações para dispositivos móveis;
• Aplicações WPF e Silverlight;
Ambientes de Desenvolvimento
• Visual Studio 2010/ 2008;
• Visual C# 2010 Express Edition;
• Visual Web Developer 2010/2008 Express Edition;
• Web Matrix;
• C-SharpDevelp;
• Projeto Mono;
• Bloco de Notas;

• Versão Express : http://www.microsoft.com/visualstudio/en-us/products/2010-


editions/express
• Pacotes de idiomas :
http://www.microsoft.com/downloads/details.aspx?familyid=5D158122-2ABF-
4CA5-977A-9324C0B1C459&displaylang=pt-br
C# - Características
• Simplicidade: os projetistas de C# costumam dizer que essa linguagem é tão poderosa quanto o C++ e tão
simples quanto o Visual Basic.
• Fortemente tipada: Evita erros por manipulação imprópria de tipos, atribuições incorretas etc.
• Controle de versões: cada assembly gerado, seja como EXE ou DLL, tem informação sobre a versão do
código, permitindo a coexistência de dois assemblies homônimos, mas de versões diferentes no mesmo
ambiente.
• Suporte a código legado: o C# pode interagir com código legado de objetos COM e DLLs escritas em uma
linguagem não-gerenciada.
• Flexibilidade: se o desenvolvedor precisar usar ponteiros, o C# permite, mas ao custo de desenvolver
código não-gerenciado, chamado “unsafe”.
• Linguagem gerenciada: os programas desenvolvidos em C# executam num ambiente gerenciado, o que
significa que todo o gerenciamento de memória é feito pelo runtime via o GC (Garbage Collector), e não
diretamente pelo programador, reduzindo as chances de cometer erros comuns a linguagens de
programação onde o gerenciamento da memória é feito diretamente pelo programador.
• É Case Sensitive – Diferencia maiúsculas de minúsculas. Ex: Macoratti é diferente de macoratti
• Esta Totalmente dentro do padrão do paradigma da POO – Linguagem totalmente orientada a objetos: Em
C# tudo é um objeto: System.Object é a classe base de todo o sistema de tipos de C#. (Herança,
Polimorfismo, Abstração, Encapsulamento)
C# - Um simples programa
C# - Um simples programa
• O Cabeçalho do programa
– A primeira linha do nosso programa, que escreve no console “Macoratti”, contém a informação do
namespace System, que contém as classes primitivas necessárias para ter acesso ao console do ambiente
.NET. Para incluir
– um namespace em C#, utilizamos a cláusula using seguida do nome do namespace.
• A declaração de uma classe
– O C# requer que toda a lógica do programa esteja contida em classes. Após a declaração da classe usando a
palavra reservada class, temos o seu respectivo identificador.
– Uma classe é um tipo abstrato de dados que no paradigma da programação orientada a objetos(OOP) é
usado para representar objetos do mundo real. No exemplo, temos uma classe que contém apenas o
método Main( ) e não recebe nenhum parâmetro.
• O Método Main( )
– Todo programa C# deve ter uma classe que defina o método Main( ), que deve ser declarado como estático
usando o modificador static, que diz ao runtime que o método pode ser chamado sem que a classe seja
instanciada. É através desse modificador que o runtime sabe qual será o ponto de entrada do programa no
ambiente Win32, para poder passar o controle ao runtime .NET.
– O “M” maiúsculo do método Main é obrigatório, e seu valor de retorno void significa que o método não
retorna nenhum valor quando é chamado
• Um programa escrito em C# pode ter mais de uma classe que implementa o método Main( ). Nesse caso,
deverá ser especificado em tempo de compilação em qual classe se encontra o método Main( ), que deverá
ser chamado pelo runtime quando a aplicação for executada.
C# - Sintaxe Básica
• // Comentário em uma linha.

/* */ Bloco de comentário.

() Separador de expressões, como cálculos e comparações,


também é usado para colocar os parâmetros de comandos e
funções.

{} Delimitador de bloco de comandos.

; Todos os comandos "simples" terminam com ";" .

= Atribuição.

== Comparação.
fim

Você também pode gostar