INTRODUÇÃO A
LINGUAGEM C#
Marcos Castro
Objetivo






O objetivo dessa apresentação é proporcionar
uma noção básica da linguagem C#.
Para
um
melhor
entendimento,
é
recomendável que o leitor tenha uma noção
de lógica de programação ou que já tenha
programado em alguma outra linguagem.
Essa apresentação tem como intuito ajudar
quem está começando ou quer começar a
programar em C#.
Introdução





C# foi desenvolvida pela Microsoft.
Foi apresentada junto a plataforma .NET.
C# é uma mistura de C++ e Java.
Criador: Anders Hejlsberg
Características





É orientada a objetos.
Possui um alto nível de abstração.
Possui coletor de lixo.
Suporta tipagem dinâmica e estática.
A

tipagem dinâmica não exige declarações de
tipos de dados (a partir da versão 3.0 do C#).
 A tipagem estática exige a declaração de quais
dados poderão ser associados a cada variável
antes da sua utilização.
Características


C# está bastante vinculada ao framework
.NET
O

framework .NET suporta várias linguagens de
programação.



C# usa a biblioteca de classe do framework
.NET
O

framework .NET possui mais de 4 mil classes.
Ambiente de desenvolvimento



Irei utilizar o Windows 7
Visual C# 2010 Express (gratuito)
 http://www.visualstudio.com/downloads/download

-visual-studio-vs


Se você for aluno, poderá fazer download de
versões pagas do Visual Studio acessando o
site:
 https://www.dreamspark.com
Primeiros passos


Primeiramente crie um projeto (File -> New
Project)
Primeiros passos


Tecle F6 para construir a aplicação e depois
tecle a combinação Ctrl + F5 para executar.
Explicação


Ctrl + F5 no Visual C# executa sem
debugging. Isso força uma pausa no final da
execução permitindo que você possa
visualizar o resultado da execução.



Já o atalho F6 é o mesmo que ir no menu
Debug e depois clicar em “Build Solution”.
Explicação



As classes são organizadas em namespaces.
System é um namespace.
Explicação



Console é uma classe do namespace System.
Explicação




Declarar seus próprios namespaces pode
ajudar no controle do escopo da classe e
nomes de métodos em grandes projetos.
Os namespaces ajudam na manutenção de
um programa!
Explicação


Quando você criou um projeto em C#
utilizando o Visual C#, ele já adicionou:



Você faz referência a um namespace
utilizando a palavra reservada “using”.
Explicação



WriteLine é um método da classe Console. É
passada a string “Hello World!”.
Observações






C# é case-sensitive, ou seja, diferencia letras
minúsculas de maiúsculas.
Com o “//” é possível fazer comentários de
uma linha.
Começando com “/*” e fechando com “*/” é
possível fazer comentários de múltiplas linhas.
Executando sem Visual C#






Uma IDE como Visual C# é muito importante
para otimizar seu tempo pois tem uma série
de recursos interessantes.
Mas você pode executar um código sem o
Visual C#.
Para executar, basta ter o framework .NET
instalado.
Executando sem Visual C#





Como saber se eu tenho o framework .NET?
Abra o Windows Explorer. Se o Windows
estiver instalado na partição C, clique nela,
entre na pasta Windows, depois entre na
pasta Microsoft.NET, entre na pasta
Framework. Dentro dessa pasta você
encontrará as versões do framework.
Irei utilizar a versão 3.5, então eu clicarei na
pasta chamada v3.5.
Executando sem Visual C#


Procure pelo arquivo “csc.exe”. É esse arquivo
que compilará o programa.
Executando sem Visual C#




Não irei adicionar nas variáveis de ambiente.
Irei chamar diretamente o “csc.exe” digitando
o endereço completo dele.
No meu caso o endereço ficou:
 C:WindowsMicrosoft.NETFrameworkv3.5csc.e

xe
Executando sem Visual C#




Abra algum editor de sua preferência. Irei
utilizar o Notepad++. Digite o seguinte código:

Salve o arquivo como “HelloWorld.cs”.
Executando sem Visual C#





Eu salvei o arquivo “HelloWorld.cs” na Área de
Trabalho.
Abra o cmd (prompt de comandos).
Digite os seguintes comandos:
 cd

desktop
 C:WindowsMicrosoft.NETFrameworkv3.5csc.e
xe HelloWorld.cs
 HelloWorld.exe
Executando sem Visual C#
Executando sem Visual C#


Fácil não é mesmo? Mas o Visual C# já faz
isso para você de forma bem mais simples!
Obtendo dados do usuário


Veja esse código que obtém dados do
usuário:



O método ReadLine() obtém os dados.
Obtendo dados do usuário


O operador “+” concatena strings.
Execução
Atenção






Nos próximos exemplos não irei colocar o
namespace.
Lembrando que é recomendável definir o
namespace.
Irei apresentar exemplos sem namespace,
apenas com a classe.
Retornando o tipo de uma
variável


Programa que retorna o tipo de uma variável



Basta utilizar a função GetType().
Execução



System.Single ?? Isso mesmo, float é um
apelido para System.Single. Cada tipo em C#
tem o apelido para o tipo .NET.
Convertendo string para inteiro


Convertendo string para inteiro (int):



Basta utilizar a função Parse().
Exibindo várias variáveis


Exibindo várias variáveis:



Basta usar {0}, {1} etc. e especificar as
variáveis.
Tipagem implícita








Nos exemplos anteriores sempre declaramos
o tipo da variável antes de utilizá-la.
A partir da versão 3.0, pode-se utilizar o
conceito de tipagem implícita.
Tipagem implícita: não é necessário informar o
tipo da variável.
Com a tipagem implícita, o tipo da variável é
definido de acordo com o valor atribuído a ela.
Tipagem implícita - Exemplo




Veja um exemplo com tipagem implícita:

Perceba que eu tenho a variável “ano” que é
inteira e a variável “nome” que é uma string.
Execução
Obtendo uma substring
 Para

obter uma substring, basta utilizar o método
Substring().
Obtendo uma substring
 Substring()

: o primeiro parâmetro é o índice de
onde começa e o segundo é a quantidade de
caracteres.
Execução
Tamanho de uma string
 Basta

utilizar o atributo Length para saber o
tamanho de uma string.
Método Contains()


Verifica se uma string está contida na outra.
Retorna True se for verdade e False caso
contrário. A saída do programa será True.
Concatenando strings


Basta utilizar o método Concat() da classe
String.
Retirando caracteres em
branco


Para retirar do final basta utilizar o método
TrimEnd() e para retirar do início basta utilizar
o método TrimStart().
Dividir uma string


Para dividir uma string, pode-se utilizar o
método Split() passando o separador que será
usado para dividir a string.
Dividir uma string



vet é um vetor de strings. A string nome é
dividida por um espaço em branco através do
método Split.
Dividir uma string



O comando for é um comando de repetição
que irá percorrer o array vet para exibir as
strings.
Execução
Juntando strings


Para juntar, pode-se utilizar o método Join().
Declarando constantes
 Basta

usar a palavra reservada “const”antes do
tipo da variável.
 Na declaração de uma constante, é obrigatório
atribuir um valor a ela no momento da
declaração.
Métodos



C# não suporta métodos globais.
Os métodos são declarados e utilizados de
forma semelhante a outras linguagens como
C, C++ e Java.
Métodos - Exemplo



Método somar() retorna a soma de dois
números.
Métodos - Outra forma



Método somar() agora não é estático (static).
Expressões condicionais


No C# você poderá utilizar as expressões:
 if
 switch



Exemplo com o if:
Expressões condicionais


Exemplo com switch:
Expressões condicionais


O switch pode ser utilizado com strings!
Observações sobre o switch



Só pode ser utilizado com os tipos primitivos.
Cada case contém uma expressão única.
Laços (loops)


C# possui os seguintes laços (loops):
 do-while
 for
 while
 foreach-in
Laços (loops) - do-while


Segue um exemplo utilizando o do-while que
soma os 10 primeiros números naturais não
nulos:
Laços (loops) - Exemplo for


Segue um exemplo utilizando o for que soma
os 10 primeiros números naturais não nulos:
Laços (loops) - Exemplo while


Segue um exemplo utilizando o while que
soma os 10 primeiros números naturais não
nulos:
Laços (loops) - foreach-in


Veja um exemplo usando o foreach-in:



Esse exemplo imprime os números 1, 2 e 3.
Tratamento de erros - try-catch


Veja como capturar execução utilizando o
bloco try-catch (exceção: divisão por zero):
Tratamento de erros - try-catch


Outra forma de fazer a mesma coisa:
Tratamento de erros - finally


O finally é sempre executado.
Classe de exceção
customizada


Veja uma classe de exceção criada, ela herda
de Exception.



Lembre-se de criá-la no mesmo namespace,
senão você terá que fazer referência a outro
namespace.
Classe de exceção
customizada


Utilizando a classe:



Veja que foi lançada a exceção com throw
new.
Execução
Criando arrays (vetores)


Os vetores são arrays unidimensionais, eles
guardam elementos de um mesmo tipo.
Criando arrays (vetores)


Essa é uma das formas de criar um vetor, no
caso foi criado um vetor de inteiros cujo
tamanho é 10.
Criando arrays (vetores)


São armazenados 10 números inteiros (de 0 a
9) e depois esses números são mostrados no
console.
Ordenar um array


Veja como ordenar um array de inteiros:



Primeiramente o array é preenchido com os
números: 4, 3, 2 e 1 (nessa ordem).
Ordenar um array



Logo após é chamado o método Sort() para
ordenar o array crescentemente. Por último é
mostrado o array. Saída: 1, 2, 3, 4.
Matrizes


Veja como é simples declarar matrizes:



Foi criada uma matriz 2x2.
Matrizes



Essa matriz foi preenchida com os valores 1,
2, 3, 4. Logo após temos 2 for para mostrar os
elementos.
Matrizes


Outra forma de resolver o problema:



Veja que a
declaração.

matriz

foi

inicializada

na
Método GetValue()


Você pode pegar os elementos de um array
utilizando o método GetValue(), basta passar
a posição do elemento, veja:
Enum




Enum são listas de valores constantes.

Foi criada a enum “mes” que possui os
valores: janeiro, fevereiro e dezembro.
Execução



O valor de janeiro é 0, o valor de fevereiro é 1
e o valor de dezembro é 2.
Criando classes


Veja o exemplo da criação de uma classe:
Criando classes


Veja a classe que usa a classe Pessoa:
Métodos


O C# permite métodos com nomes iguais,
mas parâmetros diferentes, veja:
Observação


Você percebeu que a maioria dos nossos
métodos são estáticos, ou seja, tem a palavra
“static” antes do tipo de retorno ? Pois bem,
isso acontece porque são métodos chamados
no método main e esse por sua vez é estático,
obrigando os métodos que são chamados
também serem estáticos.
Parâmetros opcionais


O C# permite parâmetros opcionais.
Parâmetros opcionais são parâmetros que tem
um valor pré-definido caso não seja passado
um valor para ele.
Parâmetros opcionais


Perceba que não foi passado parâmetro
algum para a função setNome(). Mas na lista
de parâmetros dela tem dizendo que nome
recebe a string “Sem nome” caso não seja
passado parâmetro.
Herança




Herança é um princípio de orientação a
objetos,
que
permite
que
classes
compartilhem atributos e métodos.
O C# não permite herança múltipla, ou seja,
cada classe só pode ter um pai.
Herança - Exemplo


Veja a classe pai chamada Carro:
Herança - Exemplo


Agora veja a classe filha chamada Camaro.
Ela herda métodos e atributos da classe
Carro.
Herança - Exemplo


Por último, a classe que utiliza as classes
criadas anteriormente:
Observação


Qualquer classe no C# deriva direta ou
indiretamente da classe Object, ou seja, a
classe Object é classe pai de todas as
classes.
Sobrescrevendo métodos



É preciso dizer que o método da classe pai
que você quer sobrescrever é virtual.
Sobrescrevendo métodos



Na classe filha, é preciso utilizar a palavra
“override” para sobrescrever o método.
Sobrescrevendo métodos
Palavra reservada “base”


A palavra reservada “base” faz referência aos
métodos e atributos da classe pai. Veja:
Polimorfismo






O polimorfismo permite que referências de
tipos de classes mais abstratas representem o
comportamento das classes que referenciam.
Iremos construir uma classe abstrata. Classe
abstrata é aquela classe que não pode ser
instanciada.
Para declarar uma classe como abstrata basta
utilizar a palavra “abstract” antes de “class”.
Polimorfismo


A classe Operacao é nossa classe abstrata,
ela contém um método abstrato chamado
“calcular”.
Esse
método
precisa
ser
implementado pelas classes filhas da classe
Operacao.
Polimorfismo


A primeira classe filha da classe Operacao é a
classe Soma, ela implementa o método
“calcular” sobrescrevendo (override).
Polimorfismo


A segunda classe filha da classe Operacao é
a classe Subtracao, ela implementa o método
“calcular” sobrescrevendo (override).
Polimorfismo


Perceba que a classe Soma implementa o
método calcular de um jeito e a classe
Subtracao implementa de outro.
Polimorfismo


Segue a classe que contém o método
principal:
Execução
Observação


Métodos abstratos só possuem assinatura,
não possuem corpo (implementação).
Classe final




Uma classe final é uma classe que não pode
ser herdada.
Para declarar uma classe como final, basta
utilizar a palavra “sealed” antes de “class”.
Criando interfaces




Interface é um recurso da orientação a objetos
que
define
ações
que
devem
ser
obrigatoriamente executadas.
Uma classe pode implementar várias
interfaces.
Criando interfaces




Primeiramente temos uma interface chamada
Entidade.

Basta usar a palavra “interface” antes do
nome. Veja que os métodos não possuem
implementação.
Criando interfaces


A classe Pessoa implementa os métodos da
interface Entidade.
Criando interfaces


Os métodos implementados na classe Pessoa
tem que ser public.
Criando interfaces


Testando a aplicação:
Estruturas (struct)








A diferença entre estruturas e classes é que
as estruturas não são alocadas na memória
heap.
As estruturas não suportam herança,
implementam interfaces e cada variável do
tipo struct contém uma cópia dos seus
valores.
Estruturas são tipos valor.
Estruturas podem possuir construtores, mas
não podem possuir destrutores.
Estruturas (struct)


Veja um exemplo utilizando estrutura:
Criando uma lista com List


Veja como é fácil criar uma lista usando List:
Contato


Quaisquer dúvidas, sugestões ou críticas é só
entrar em contato:
www.about.me/mcastrosouza
www.slideshare.net/mcastrosouza
www.geeksbr.com
mcastosouza@live.com

Introdução a linguagem C# (CSharp)