Sei sulla pagina 1di 109

INTRODUO A

LINGUAGEM C#
Marcos Castro

Objetivo

O objetivo dessa apresentao


proporcionar uma noo bsica da
linguagem C#.
Para um melhor entendimento,
recomendvel que o leitor tenha uma
noo de lgica de programao ou que
j tenha programado em alguma outra
linguagem.
Essa apresentao tem como intuito
ajudar quem est comeando ou quer
comear a programar em C#.

Introduo

C# foi desenvolvida pela Microsoft.


Foi apresentada junto a plataforma .NET.
C# uma mistura de C++ e Java.
Criador: Anders Hejlsberg

Caractersticas

orientada a objetos.
Possui um alto nvel de abstrao.
Possui coletor de lixo.
Suporta tipagem dinmica e esttica.

A tipagem dinmica no exige declaraes


de tipos de dados (a partir da verso 3.0 do
C#).
A tipagem esttica exige a declarao de
quais dados podero ser associados a cada
varivel antes da sua utilizao.

Caractersticas

C# est bastante vinculada ao


framework .NET

O
framework
.NET
suporta
linguagens de programao.

vrias

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/down
load-visual-studio-vs

Se voc for aluno, poder fazer


download de verses 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 aplicao e


depois tecle a combinao Ctrl + F5
para executar.

Explicao

Ctrl + F5 no Visual C# executa sem


debugging. Isso fora uma pausa no final
da execuo permitindo que voc possa
visualizar o resultado da execuo.

J o atalho F6 o mesmo que ir no menu


Debug e depois clicar em Build
Solution.

Explicao

As
classes
so
organizadas
em
namespaces. System um namespace.

Explicao

Console uma classe do namespace


System.

Explicao

Declarar seus prprios namespaces pode


ajudar no controle do escopo da classe
e nomes de mtodos em grandes
projetos.
Os namespaces ajudam na manuteno
de um programa!

Explicao

Quando voc criou um projeto em C#


utilizando o Visual C#, ele j adicionou:

Voc faz referncia a um namespace


utilizando a palavra reservada using.

Explicao

WriteLine um mtodo da classe


Console. passada a string Hello
World!.

Observaes

C# case-sensitive, ou seja, diferencia


letras minsculas de maisculas.
Com o // possvel fazer comentrios
de uma linha.
Comeando com /* e fechando com
*/ possvel fazer comentrios de
mltiplas linhas.

Executando sem Visual C#

Uma IDE como Visual C# muito


importante para otimizar seu tempo pois
tem
uma
srie
de
recursos
interessantes.
Mas voc pode executar um cdigo 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 partio C, clique
nela, entre na pasta Windows, depois
entre na pasta Microsoft.NET, entre na
pasta Framework. Dentro dessa pasta
voc
encontrar
as
verses
do
framework.
Irei utilizar a verso 3.5, ento 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#

No irei adicionar nas variveis de


ambiente. Irei chamar diretamente o
csc.exe digitando o endereo completo
dele.
No meu caso o endereo ficou:

C:\Windows\Microsoft.NET\Framework\v3.5\
csc.exe

Executando sem Visual C#

Abra algum editor de sua preferncia.


Irei utilizar o Notepad++. Digite o
seguinte cdigo:

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:\Windows\Microsoft.NET\Framework\v3.5\
csc.exe HelloWorld.cs
HelloWorld.exe

Executando sem Visual C#

Executando sem Visual C#

Fcil no mesmo? Mas o Visual C# j


faz isso para voc de forma bem mais
simples!

Obtendo dados do usurio

Veja esse cdigo que obtm dados do


usurio:

O mtodo ReadLine() obtm os dados.

Obtendo dados do usurio

O operador + concatena strings.

Execuo

Ateno

Nos prximos exemplos no irei colocar


o namespace.
Lembrando que recomendvel definir o
namespace.
Irei
apresentar
exemplos
sem
namespace, apenas com a classe.

Retornando o tipo de uma


varivel

Programa que retorna o tipo de uma


varivel

Basta utilizar a funo GetType().

Execuo

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 funo Parse().

Exibindo vrias variveis

Exibindo vrias variveis:

Basta usar {0}, {1} etc. e especificar as


variveis.

Tipagem implcita

Nos
exemplos
anteriores
sempre
declaramos o tipo da varivel antes de
utiliz-la.
A partir da verso 3.0, pode-se utilizar o
conceito de tipagem implcita.
Tipagem implcita: no necessrio
informar o tipo da varivel.
Com a tipagem implcita, o tipo da
varivel definido de acordo com o
valor atribudo a ela.

Tipagem implcita - Exemplo

Veja um exemplo com tipagem implcita:

Perceba que eu tenho a varivel ano


que inteira e a varivel nome que
uma string.

Execuo

Obtendo uma substring

Para obter uma substring, basta utilizar o


mtodo Substring().

Obtendo uma substring

Substring() : o primeiro parmetro o


ndice de onde comea e o segundo a
quantidade de caracteres.

Execuo

Tamanho de uma string

Basta utilizar o atributo Length para saber


o tamanho de uma string.

Mtodo Contains()

Verifica se uma string est contida na


outra. Retorna True se for verdade e
False caso contrrio. A sada do
programa ser True.

Concatenando strings

Basta utilizar o mtodo Concat() da


classe String.

Retirando caracteres em
branco

Para retirar do final basta utilizar o


mtodo TrimEnd() e para retirar do incio
basta utilizar o mtodo TrimStart().

Dividir uma string

Para dividir uma string, pode-se utilizar o


mtodo 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 espao em branco
atravs do mtodo Split.

Dividir uma string

O comando for um comando de


repetio que ir percorrer o array vet
para exibir as strings.

Execuo

Juntando strings

Para juntar, pode-se utilizar o mtodo


Join().

Declarando constantes

Basta usar a palavra reservada


constantes do tipo da varivel.
Na declarao de uma constante,
obrigatrio atribuir um valor a ela no
momento da declarao.

Mtodos

C# no suporta mtodos globais.


Os mtodos so declarados e utilizados
de
forma
semelhante
a
outras
linguagens como C, C++ e Java.

Mtodos - Exemplo

Mtodo somar() retorna a soma de dois


nmeros.

Mtodos - Outra forma

Mtodo somar() agora no esttico


(static).

Expresses condicionais

No C# voc
expresses:

if
switch

Exemplo com o if:

poder

utilizar

as

Expresses condicionais

Exemplo com switch:

Expresses condicionais

O switch pode ser utilizado com strings!

Observaes sobre o switch

S pode ser utilizado com os tipos


primitivos.
Cada case contm uma expresso nica.

Laos (loops)

C# possui os seguintes laos (loops):

do-while
for
while
foreach-in

Laos (loops) - do-while

Segue um exemplo utilizando o do-while


que soma os 10 primeiros nmeros
naturais no nulos:

Laos (loops) - Exemplo for

Segue um exemplo utilizando o for que


soma os 10 primeiros nmeros naturais
no nulos:

Laos (loops) - Exemplo


while

Segue um exemplo utilizando o while


que soma os 10 primeiros nmeros
naturais no nulos:

Laos (loops) - foreach-in

Veja um exemplo usando o foreach-in:

Esse exemplo imprime os nmeros 1, 2 e


3.

Tratamento de erros - trycatch

Veja como capturar execuo utilizando


o bloco try-catch (exceo: diviso por
zero):

Tratamento de erros - trycatch

Outra forma de fazer a mesma coisa:

Tratamento de erros - finally

O finally sempre executado.

Classe de exceo
customizada

Veja uma classe de exceo criada, ela


herda de Exception.

Lembre-se
de
cri-la
no
mesmo
namespace, seno voc ter que fazer
referncia a outro namespace.

Classe de exceo
customizada

Utilizando a classe:

Veja que foi lanada a exceo com


throw new.

Execuo

Criando arrays (vetores)

Os vetores so 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)

So armazenados 10 nmeros inteiros


(de 0 a 9) e depois esses nmeros so
mostrados no console.

Ordenar um array

Veja como ordenar um array de inteiros:

Primeiramente o array preenchido com


os nmeros: 4, 3, 2 e 1 (nessa ordem).

Ordenar um array

Logo aps chamado o mtodo Sort()


para ordenar o array crescentemente.
Por ltimo mostrado o array. Sada: 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 aps temos 2 for
para mostrar os elementos.

Matrizes

Outra forma de resolver o problema:

Veja que a matriz foi inicializada na


declarao.

Mtodo GetValue()

Voc pode pegar os elementos de um


array utilizando o mtodo GetValue(),
basta passar a posio do elemento,
veja:

Enum

Enum so listas de valores constantes.

Foi criada a enum mes que possui os


valores: janeiro, fevereiro e dezembro.

Execuo

O valor de janeiro 0, o valor de


fevereiro 1 e o valor de dezembro 2.

Criando classes

Veja o exemplo da criao de uma


classe:

Criando classes

Veja a classe que usa a classe Pessoa:

Mtodos

O C# permite mtodos com nomes


iguais, mas parmetros diferentes, veja:

Observao

Voc percebeu que a maioria dos nossos


mtodos so estticos, ou seja, tem a
palavra static antes do tipo de
retorno ? Pois bem, isso acontece porque
so mtodos chamados no mtodo main
e esse por sua vez esttico, obrigando
os mtodos que so chamados tambm
serem estticos.

Parmetros opcionais

O C# permite parmetros opcionais.


Parmetros opcionais so parmetros
que tem um valor pr-definido caso no
seja passado um valor para ele.

Parmetros opcionais

Perceba que no foi passado parmetro


algum para a funo setNome(). Mas na
lista de parmetros dela tem dizendo
que nome recebe a string Sem nome
caso no seja passado parmetro.

Herana

Herana um princpio de orientao a


objetos, que permite que classes
compartilhem atributos e mtodos.
O C# no permite herana mltipla, ou
seja, cada classe s pode ter um pai.

Herana - Exemplo

Veja a classe pai chamada Carro:

Herana - Exemplo

Agora veja a classe filha chamada


Camaro. Ela herda mtodos e atributos
da classe Carro.

Herana - Exemplo

Por ltimo, a classe que utiliza as classes


criadas anteriormente:

Observao

Qualquer classe no C# deriva direta ou


indiretamente da classe Object, ou seja,
a classe Object classe pai de todas as
classes.

Sobrescrevendo mtodos

preciso dizer que o mtodo da classe pai


que voc quer sobrescrever virtual.

Sobrescrevendo mtodos

Na classe filha, preciso utilizar a palavra


override para sobrescrever o mtodo.

Sobrescrevendo mtodos

Palavra reservada base

A
palavra
reservada
base
faz
referncia aos mtodos e atributos da
classe pai. Veja:

Polimorfismo

O polimorfismo permite que referncias


de tipos de classes mais abstratas
representem o comportamento das
classes que referenciam.
Iremos construir uma classe abstrata.
Classe abstrata aquela classe que no
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 contm um mtodo
abstrato chamado calcular. Esse
mtodo precisa ser implementado pelas
classes filhas da classe Operacao.

Polimorfismo

A primeira classe filha da classe


Operacao a classe Soma, ela
implementa
o
mtodo
calcular
sobrescrevendo (override).

Polimorfismo

A segunda classe filha da classe


Operacao a classe Subtracao, ela
implementa
o
mtodo
calcular
sobrescrevendo (override).

Polimorfismo

Perceba que a classe Soma implementa


o mtodo calcular de um jeito e a classe
Subtracao implementa de outro.

Polimorfismo

Segue a classe que contm o mtodo


principal:

Execuo

Observao

Mtodos
abstratos
s
possuem
assinatura,
no
possuem
corpo
(implementao).

Classe final

Uma classe final uma classe que no


pode ser herdada.
Para declarar uma classe como final,
basta utilizar a palavra sealed antes
de class.

Criando interfaces

Interface um recurso da orientao a


objetos que define aes que devem ser
obrigatoriamente executadas.
Uma classe pode implementar vrias
interfaces.

Criando interfaces

Primeiramente temos
chamada Entidade.

uma

interface

Basta usar a palavra interface antes


do nome. Veja que os mtodos no
possuem implementao.

Criando interfaces

A classe Pessoa implementa os mtodos


da interface Entidade.

Criando interfaces

Os mtodos implementados na classe


Pessoa tem que ser public.

Criando interfaces

Testando a aplicao:

Estruturas (struct)

A diferena entre estruturas e classes


que as estruturas no so alocadas na
memria heap.
As estruturas no suportam herana,
implementam interfaces e cada varivel
do tipo struct contm uma cpia dos
seus valores.
Estruturas so tipos valor.
Estruturas podem possuir construtores,
mas no podem possuir destrutores.

Estruturas (struct)

Veja um exemplo utilizando estrutura:

Criando uma lista com List

Veja como fcil criar uma lista usando


List:

Contato

Quaisquer dvidas, sugestes ou crticas


s entrar em contato:
www.about.me/mcastrosouza
www.slideshare.net/mcastrosouza
www.geeksbr.com
mcastosouza@live.com

Potrebbero piacerti anche