5. Agenda
▪ A linguagem c#
▪ O framework .NET
▪ Visual studio 2017
▪ Métodos
▪ Estruturas condicionais
▪ Depuração
6. A linguagem C#
▪ Criada por Anders Hejlsberg após convite da Microsoft
▪ Incialmente chamava-se cool
▪ Registrada como padrão aberto ISO/IEC 23270.
7. Principais Características
▪ Completamente orientada a objetos – qualquer variável é
um objeto.
▪ Fortemente tipada: As variáveis tem tipos específicos
▪ Código gerenciado: código gerenciado executará em um
ambiente gerenciado que assegura: Garbage collector,
tratamento de exceção, verificação de índice e limites de
array.
8. O que é .NET
▪ A plataforma .NET é um ambiente de execução runtime
que gerência os aplicativos em .neT.
▪ A plataforma .NET é um ambiente gerenciado que provê
uma variedade de serviços para as aplicações.
9. Vantagens de Utilizar .NET
▪ Gerenciamento de memoria.
▪ Um sistema de tipo comum para todas as linguagens.
▪ Uma extensiva biblioteca de classes.
▪ Interoperabilidade entre as várias linguagens existentes no
.NET
– Visual Basic .NET, Jscript .NET F#...
14. .NET
▪ A Infraestrutura comum de
linguagem é especificada
pelos padrões: ECMA-335
e ISO/IEC 23271
– A linguagem é aberta.
15. CIL – Common intermediate language
▪ CIL é uma linguagem orientada a objetos.
▪ Usualmente é traduzida em código nativo ou executado por
uma maquina virtual.
▪ execução:
– Código fonte (C#, VB.NET, F#) é convertido para CIL
– Quando o programa é executado ele é compilado para o código
nativo.
16. Conceitos
▪ CLI = Common Language Infrastructure
▪ CIL = Common Intermediate Language
▪ CLR = Common Language Runtime
17. Conceitos
▪ Código gerenciado: Código que tem
como alvo a CLR. Código gerenciado,
é compilado para CIL. Em tempo de
execução o jit, um componente da
clr, transforma o código Il para
código nativo.
▪ Código não gerenciado: Código
desenvolvido fora da framework
.NET. Aplicações que não são
executadas sobre a clr.
18. .NET e Licenças
▪ .NET é open source
– Licenças apache ou mit.
– Alguns componentes ainda são proprietários:
▪ Winforms, wpf, wwf, wcf.
▪ Leia mais:
– https://blogs.msdn.microsoft.com/dotnet/2014/11/12/net-core-is-open-
source/
20. Visual Studio –- Diferença De Versões
A versão community será
o suficiente para este
curso, no entanto
verifique com a instituição
a possibilidade de utilizar
outras versões a partir de
convênio com a Microsoft.
Fonte: https://www.visualstudio.com/pt-br/vs/compare/
21. Soluções e Projetos
▪ Uma solução tem vários projetos.
▪ Um projeto tem vários arquivos de código fonte
– Os arquivos de código fonte em c# tem a extensão “*.cs”
▪ Cada projeto pode ser compilado em um assembly .NET.
22. Extensões dos arquivos.
▪ Arquivos *.SLN: Configurações da Solução.
▪ Arquivos *.CSPROJ: Configurações do projeto.
▪ Arquivos *.CS: Código fonte.
24. Criando Uma Projeto - Console
Aplicativo de console
Altere o nome do
projeto
Para meu projeto.
25. O Código Fonte
Para executar aperte o
botão f6.
Ou acesse o menu:
depurar//iniciar
depuração
-------------------------
-
Para visualizar a
mensagem adicione o
código
‘System.Console.ReadKey();’
26. Criando Um Método
▪ Representação de uma operação:
public class Program
{
static void Main(string[] args){…}
static int somar(int a, int b)
{
// retorna o valor de soma entre dois números.
return a+b;
}
}
27. Operações
▪ A declaração de uma operação contem:
▪ static void Tocar()
–Tocar: O nome da operação
–void : O valor de retorno desta operação.
▪ Caso a operação não tenha valor de retorno o tipo de retorno deverá ser
declarado como void.
–Static: a operação pertence a classe.
28. Operações – - Valor De Retorno
▪ Uma função que tem um tipo de retorno especificado
diferente de void, obrigatoriamente terá que retornar
um valor.
▪ O retorno é feito com a palavra chave return.
29. Exercício
▪ Crie uma função que some dois números inseridos pelo
usuário:
– Para ler uma string inserida pelo usuário utilize
▪ String stringlida= Console.readline();
– Para fazer o cast de um tipo string para um tipo inteiro
▪ Int valor = Int.parse(stringlida)
Observações
▪ 15Minutos
▪ Caso tenha problema com acentos antes de imprimir qualquer mensagem
chame a seguinte operação:
Console.OutputEncoding = System.Text.Encoding.Unicode;
31. If - Else
▪ A estrutura if-else é uma das
estruturas condicionais mais comuns e
presentes na maioria das linguagens de
programação
▪ if ou Else if: Caso a condição seja
verdadeira a operação será executada
E a estrutura if-else será finalizada,
caso contrário a próxima estrutura
else if ou else será avaliada.
▪ Else: caso nenhuma das condições
anteriores sejam verdadeiras a opção
será executada.
32. Switch case
▪ Um case será executado caso A variável
argumento do switch tenha o valor
definido.
▪ Para múltiplos casos com a mesma
consequência coloque um case logo após o
anterior com a nova condição.
▪ Cada caso Será executado até a palavra
break.
▪ Caso nenhum dos cases seja verdadeiro irá
executar o comando para o caso default.
33. Operadores condicionais
▪ &&: as duas condições deverão ser verdadeiras.
– Se o primeiro operando for falso, então, o C# não avaliará o segundo
operando.
▪ ||: qualquer uma das condições poderá ser verdadeira
– Se o primeiro operando for verdadeiro, então, o C# não avaliará o
segundo operando.
35. depuração
A tarefa de depuração ou
debugging no visual studio
2017 é muito facilitada
pelas ferramentas
existentes para auxiliar o
programador.
36. Depuração
▪ Breakpoint. São pontos onde a execução do programa ira
parar.
▪ Criando um breakpoint
– Clique f9;
– Clique na área cinza do lado do número das linhas.
39. Tipos primitivos – - numéricos
Tipo C# Tipo .NET Descrição
Faixa de
dados
byte System.Byte
Inteiro de 8-bit com
sina
-127 a 128
Sbyte System.Sbyte
Inteiro de 8-bit sem
sinal
0 a 255
Short System.Int16
Inteiro de 16-bit
com sinal
-32,768
a 32,767
Ushort System.UInt16
Inteiro de 16-bit
sem sinal
0 a 65,535
40. Tipos primitivos - numéricos
Tipo C# Tipo .NET Descrição Faixa de dados
decimal System.Decimal
Inteiro de 96-bit com sinal
com 28-29 dígitos
significativos
1,0 × 10-28 a 7,9 × 1028
double System.Double
Flutuante IEEE 64-bit com 15-
16 dígitos significativos
±5,0 × 10-324 a ±1,7 × 10308
float System.Single
Flutuante IEEE 32-bit com 7
dígitos significativos
±1,5 × 10-45 a ±3,4 × 1038
int System.Int32 Inteiro de 32-bit com sinal
-2.147.483.648
a 2.147.483.647
long System.Int64 Inteiro de 64-bit com sinal
–9,223,372,036,854,775,808
a 9,223,372,036,854,775,807
Uint System.UInt32 Inteiro de 32-bit sem sinal 0 a 4,294,967,295
Ulong System.UInt64 Inteiro de 64-bit sem sinal
0
a 18,446,744,073,709,551,6
15
41. Tipos primitivos - não numéricos
Tipo C# Tipo .NET Descrição Faixa de dados
bool System.Boolean Booleano true ou false
char System.Char
Caracter Unicode de 16-
bit
U+0000 a U+ffff
Object System.Object Classe base
String System.String
String de caracteres
Unicode
42. Exercício
▪ Crie um programa que imprima o número 1.1 Utilize os
tipos float, double e decimal.
▪ Observações:
– Para transformar um número para string utilize a função
.ToString(“e20”);
▪ E20 especifica o número de casas decimais.
43. Diferenças entre decimal, float e double
– Utilize Float para executar as seguintes operações:
▪ float valor = 1.0f + (10.100.000.000 + -10.100.000.000);
▪ float valor2 = (1.0f + 10.100.000.000) + -10.100.000.000;
▪ O marcador de milhar é somente para facilitar a leitura. Retire no código.
– O número decimal deve ser utilizado para cálculos financeiros, por ter
precisão decimal. Entretanto os tipos que utilizam ponto flutuante
no formato IEEE tem maior performance.
44. Diferenças entre decimal, float e double
▪ Algumas curiosidades sobre a utilização de ponto flutuante:
– https://randomascii.wordpress.com/2012/02/25/comparing-floating-
point-numbers-2012-edition/
45. Para a próxima aula
▪ Exercício de objetivo disponibilizado no ava
▪ Leia o capítulo 1 do livro disponível no ambiente virtual de
aprendizagem
▪ Estudar o projeto do visual studio disponível no ava
De uma maneira fraca podemos comparar a CLR com uma maquina virtual, como a JVM. Mas esta comparação é fraca, pois na verdade ela é composta de varias bibliotecas e um JIT que compila o código CIL para o código nativo da máquina alvo.
Fonte: https://msdn.microsoft.com/en-us//library/8bs2ecf4(v=vs.110).aspx
Figura: https://msdn.microsoft.com/en-us/library/zw4w595w(v=vs.110).aspx
http://www.linhadecodigo.com.br/artigo/120/arquitetura-net-msil-clr-cts-cls-blc-jit.aspx
What is managed code: https://msdn.microsoft.com/pt-br/library/windows/desktop/bb318664(v=vs.85).aspx
Managed and unmanaged code in .NET
http://www.c-sharpcorner.com/uploadfile/puranindia/managed-code-and-unmanaged-code-in-net/