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:\Windows\Microsoft.NET\Framework\v3.5\
csc.exe
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:\Windows\Microsoft.NET\Framework\v3.5\
csc.exe 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 matriz foi inicializada na declaração.
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/mcastrosouzawww.slideshare.net/mcastrosouza
Top Related