SlideShare ist ein Scribd-Unternehmen logo
1 von 23
C#
Estruturas de controle,
strings e nullable types
     Leonardo Melo Santos
     http://about.me/leonardomelosantos
Conteúdo programático
● Strings
  ○ Métodos
  ○ Formatação
  ○ StringBuilder
● Estruturas condicionais
  ○ if, switch
● Estruturas iterativas
  ○ while, for, foreach
● Nullable types
Strings
●   Classe System.String
●   Palavra reservada “string”
●   Escrita entre aspas duplas
●   Valor imutável
     ○ Qualquer modificação gera outra string
● Operador de concatenação: +

    string texto = "Olá, " + "Maria";
Strings - Operações
●   Equals
●   StartsWith
●   EndsWith
●   IndexOf
●   ToLower
●   ToUpper
●   Split
●   Trim
Strings - Caracteres especiais
● Alguns caracteres são usados para
  operações especiais dentro da string
  ○ “n” – passa a próxima linha
  ○ “t” – tabulação
  ○ “a” – beep
  ○ “” – barra invertida
String - Verbatim
● Para utilizar a string da forma que ela foi
  escrita
   ○ dispensando os caracteres especiais, utilizamos a
     string Verbatim
   ○ @ no início da string


string texto = "Olá, Maria n";
string texto2 = @"Olá, Maria n";
String - Formatação
● string.Format
● Parâmetros:
  ○ String com parâmetros a serem formatados
  ○ Valores a substituírem tais parâmetros


DateTime data = DateTime.Now;
string x = string.Format(“{0:dd/MM/yyyy}”, data);
Console.WriteLine(x);
String - Exemplos de formatação de datas

● dd/MM/yyyy hh:mm
  ○ Dia, mês e ano, com horas e minutos
  ○ Horas de 0 a 12
● dd/MM/yyyy HH:mm
  ○ Dia, mês e ano, com horas e minutos
  ○ Horas de 0 a 24
● dddd dd/MM/yyyy
  ○ dddd representa o nome do dia
  ○ Exemplo: “segunda-feira”
String - Formatando números
                   Padrão de Formatação de Strings
Especificador   Significado                              Saída

      c         Valor monetário específico do local;     R$ 4.834,50

     d          Inteiro geral                            4834

     e          Notação Científica                       4.834E+003

      f         Decimal de ponto fixo                    4834.50

     g          Número geral                             4834.5

     n          Formato usual específico do local para   4,834.50 (Reino Unido/EUA)
                números                                  4 834,50 (Europa Continental)

     p          Notação de porcentagem                   483.450,00%

     x          Formato hexadecimal                      1120
String - Praticando formatação de números
Double numeroDouble= 4864.5;
int numeroInteiro   = 4864;


Console.WriteLine(String.Format("C = {0:c}", numeroDouble));
Console.WriteLine(String.Format("D = {0:d}", numeroInteiro));
Console.WriteLine(String.Format("E = {0:e}", numeroDouble));
Console.WriteLine(String.Format("F = {0:f}", numeroDouble));
Console.WriteLine(String.Format("G = {0:g}", numeroDouble));
Console.WriteLine(String.Format("N = {0:n}", numeroDouble));
Console.WriteLine(String.Format("P = {0:p}", numeroDouble));
Console.WriteLine(String.Format("X = {0:x}", numeroInteiro));


Console.WriteLine(numeroDouble.ToString("##########.##"));
Console.WriteLine(numeroDouble.ToString("0000000000.00"));
Strings x performance
● Cada alteração na string cria outra instância
● Várias concatenações prejudicam
  performance
● Classe StringBuilder
  ○ Namespace System.Text
  ○ Não concatena, adiciona strings
  ○ Só cria a string ao chamar ToString()
Strings e StringBuilder
Evita criação de novas strings desnecessárias

StringBuilder texto = new StringBuilder();
texto.Append("Olá, ");
texto.Append(" pessoal do curso ");
texto.Append(" de C# ");
string textoFinal = texto.ToString();
Console.WriteLine(textoFinal);
Estruturas de controle
Condicional if
●   Executa comandos caso teste seja
●   verdadeiro
●   Caso não seja, executa comando do bloco
●   “else”, caso exista
●   Blocos podem ser aninhados
●   Bloco else pode ter condição (else if)

if (3 < 2) {
     Console.WriteLine("Valor menor!“);
}
Condicional if
string texto = Console.ReadLine();
int idade = Convert.ToInt32(Console.ReadLine());
if (idade >= 0) {
    if (texto.Equals("Maria")) {
        if (idade > 0 && idade < 18) {
            Console.WriteLine("A escolhida é uma adolescente");
        } else if (idade > 0 && idade < 150) {
            Console.WriteLine("A escolhida é uma mulher adulta");
        }
    } else {
        Console.WriteLine("Você escolheu uma opção errada");
    }
} else {
    Console.WriteLine("Idade deve ser positiva");
}
Condicinal switch
● Permite escolha de várias opções para o valor de uma
  variável
● Substitui vários “blocos if” encadeados
● O teste do tipo do valor é feito através do bloco case
● Cada bloco case possui comandos e a instrução break
  ao final
● Bloco default executa caso nenhum bloco case seja
  executado
● Aceita strings, números, enumerações, etc...
Condicional switch - Exemplos
switch (texto) {
case "Maria":
    Console.WriteLine("Você escolheu uma mulher");
    break;
case "João":
    Console.WriteLine("Você escolheu um homem");
    break;
default:
    Console.WriteLine("Valor incorreto!");
    break;
}

Possibilidade de agrupar cases:
    case "Maria":
    case "João":
    //faça algo
    break;
Iteração com while
● Executa comandos enquanto a expressão booleana é
  verdadeira
● Pode ser aninhado
● O comando break sai do laço while
● Evite loops infinitos

string nome = "";
while (nome != "Sérgio") {
  Console.WriteLine("Opção inválida. Nome: ");
    nome = Console.ReadLine();
}
Iteração com do while
● Executa uma operação e só depois testa a
  expressão
● Ideal para casos em que é necessário
  execução de no mínimo uma vez

string nome = "";
do {
  Console.Write("Digite um nome:");
  nome = Console.ReadLine();
} while (nome != "Sérgio") ;
Iteração com for
●   O bloco while não controla a quantidade de iterações
●   Utiliza variável de iteração
●   Executa comandos enquanto expressão for verdadeira
●   Modifica valor da variável de iteração
●   Qualquer dos 3 comandos internos do for é opcional


for (int i = 0; i < 10; i++) {
  Console.WriteLine("Motrando número " + i);
}
Iteração com foreach
●   Uma opção para iteração em coleções
●   Não necessita de tratamento do tamanho da coleção
●   Utiliza variável representando o valor atual na coleção
●   Estrutura “foreach algo in colecao”

string texto = Console.ReadLine();
foreach (char c in texto.ToCharArray())
{
   Console.WriteLine(“Letra:" + c);
}
Nullable types
● Permite que os "value types" aceitem null
  como valor de variável
  ○ Value types: Structs, Enumerations, Numeric
    types (decimal, float, double, byte, short, int,
    long, ...), bool, "User defined structs"
● A variável passa a ter uma propriedade
  chamada “HasValue” e outra chamada
  "Value"
● Sintaxe:
  ○ <tipo>? <identificadorVariavel>;
  ○ Nullable<tipo> <identificadorVariavel>;
Dúvidas

Weitere ähnliche Inhalte

Was ist angesagt?

JavaScript: agora é sério
JavaScript: agora é sérioJavaScript: agora é sério
JavaScript: agora é sérioLuciano Ramalho
 
Introdução a JavaScript
Introdução a JavaScriptIntrodução a JavaScript
Introdução a JavaScriptBruno Catão
 
Introdução a linguagem C# (CSharp)
Introdução a linguagem C# (CSharp)Introdução a linguagem C# (CSharp)
Introdução a linguagem C# (CSharp)Marcos Castro
 
mod3-programação-estruturada
mod3-programação-estruturadamod3-programação-estruturada
mod3-programação-estruturadadiogoa21
 
Pseudocódigo ou Portugol (Lógica de Programação)
Pseudocódigo ou Portugol (Lógica de Programação)Pseudocódigo ou Portugol (Lógica de Programação)
Pseudocódigo ou Portugol (Lógica de Programação)Gercélia Ramos
 
3. Funções/repórteres e listas em Snap!; Utilização de variáveis – Fundamento...
3. Funções/repórteres e listas em Snap!; Utilização de variáveis – Fundamento...3. Funções/repórteres e listas em Snap!; Utilização de variáveis – Fundamento...
3. Funções/repórteres e listas em Snap!; Utilização de variáveis – Fundamento...Manuel Menezes de Sequeira
 
Apostila de Introdução a POO com C#
Apostila de Introdução a POO com C#Apostila de Introdução a POO com C#
Apostila de Introdução a POO com C#Andre Nascimento
 
Programação orientada a objetos - IV
Programação orientada a objetos - IVProgramação orientada a objetos - IV
Programação orientada a objetos - IVGabriel Faustino
 
Estruturas de dados com C++ e STL
Estruturas de dados com C++ e STLEstruturas de dados com C++ e STL
Estruturas de dados com C++ e STLMarcos Castro
 
Logica Algoritmo 07 Subalgoritmos
Logica Algoritmo 07 SubalgoritmosLogica Algoritmo 07 Subalgoritmos
Logica Algoritmo 07 SubalgoritmosRegis Magalhães
 
5. Atribuições especiais; Arrays; Tipos de ciclos; Classes-pacote – Fundament...
5. Atribuições especiais; Arrays; Tipos de ciclos; Classes-pacote – Fundament...5. Atribuições especiais; Arrays; Tipos de ciclos; Classes-pacote – Fundament...
5. Atribuições especiais; Arrays; Tipos de ciclos; Classes-pacote – Fundament...Manuel Menezes de Sequeira
 
Aula02 - Sistemas Numéricos computacionais
Aula02 - Sistemas Numéricos computacionaisAula02 - Sistemas Numéricos computacionais
Aula02 - Sistemas Numéricos computacionaisJorge Ávila Miranda
 
Programação "Estruturada" com Java
Programação "Estruturada" com JavaProgramação "Estruturada" com Java
Programação "Estruturada" com JavaLuiz Ricardo Silva
 
14. Interfaces; Listas e cadeias ligadas; Iteradores – Fundamentos de Program...
14. Interfaces; Listas e cadeias ligadas; Iteradores – Fundamentos de Program...14. Interfaces; Listas e cadeias ligadas; Iteradores – Fundamentos de Program...
14. Interfaces; Listas e cadeias ligadas; Iteradores – Fundamentos de Program...Manuel Menezes de Sequeira
 

Was ist angesagt? (20)

Aula python
Aula pythonAula python
Aula python
 
Aula02 - Lógica de Programação
Aula02 - Lógica de ProgramaçãoAula02 - Lógica de Programação
Aula02 - Lógica de Programação
 
JavaScript: agora é sério
JavaScript: agora é sérioJavaScript: agora é sério
JavaScript: agora é sério
 
Introdução a JavaScript
Introdução a JavaScriptIntrodução a JavaScript
Introdução a JavaScript
 
Aula05 - Lógica de Programação
Aula05 - Lógica de ProgramaçãoAula05 - Lógica de Programação
Aula05 - Lógica de Programação
 
Introdução a linguagem C# (CSharp)
Introdução a linguagem C# (CSharp)Introdução a linguagem C# (CSharp)
Introdução a linguagem C# (CSharp)
 
SFD - C# para a comunidade
SFD - C# para a comunidadeSFD - C# para a comunidade
SFD - C# para a comunidade
 
Python + algoritmo
Python + algoritmoPython + algoritmo
Python + algoritmo
 
mod3-programação-estruturada
mod3-programação-estruturadamod3-programação-estruturada
mod3-programação-estruturada
 
Pseudocódigo ou Portugol (Lógica de Programação)
Pseudocódigo ou Portugol (Lógica de Programação)Pseudocódigo ou Portugol (Lógica de Programação)
Pseudocódigo ou Portugol (Lógica de Programação)
 
3. Funções/repórteres e listas em Snap!; Utilização de variáveis – Fundamento...
3. Funções/repórteres e listas em Snap!; Utilização de variáveis – Fundamento...3. Funções/repórteres e listas em Snap!; Utilização de variáveis – Fundamento...
3. Funções/repórteres e listas em Snap!; Utilização de variáveis – Fundamento...
 
Apostila de Introdução a POO com C#
Apostila de Introdução a POO com C#Apostila de Introdução a POO com C#
Apostila de Introdução a POO com C#
 
Programação orientada a objetos - IV
Programação orientada a objetos - IVProgramação orientada a objetos - IV
Programação orientada a objetos - IV
 
Estruturas de dados com C++ e STL
Estruturas de dados com C++ e STLEstruturas de dados com C++ e STL
Estruturas de dados com C++ e STL
 
Geca - Encontro 0
Geca - Encontro 0Geca - Encontro 0
Geca - Encontro 0
 
Logica Algoritmo 07 Subalgoritmos
Logica Algoritmo 07 SubalgoritmosLogica Algoritmo 07 Subalgoritmos
Logica Algoritmo 07 Subalgoritmos
 
5. Atribuições especiais; Arrays; Tipos de ciclos; Classes-pacote – Fundament...
5. Atribuições especiais; Arrays; Tipos de ciclos; Classes-pacote – Fundament...5. Atribuições especiais; Arrays; Tipos de ciclos; Classes-pacote – Fundament...
5. Atribuições especiais; Arrays; Tipos de ciclos; Classes-pacote – Fundament...
 
Aula02 - Sistemas Numéricos computacionais
Aula02 - Sistemas Numéricos computacionaisAula02 - Sistemas Numéricos computacionais
Aula02 - Sistemas Numéricos computacionais
 
Programação "Estruturada" com Java
Programação "Estruturada" com JavaProgramação "Estruturada" com Java
Programação "Estruturada" com Java
 
14. Interfaces; Listas e cadeias ligadas; Iteradores – Fundamentos de Program...
14. Interfaces; Listas e cadeias ligadas; Iteradores – Fundamentos de Program...14. Interfaces; Listas e cadeias ligadas; Iteradores – Fundamentos de Program...
14. Interfaces; Listas e cadeias ligadas; Iteradores – Fundamentos de Program...
 

Ähnlich wie Curso de OO com C# - Parte 04 - Estruturas de controle e Strings

Ähnlich wie Curso de OO com C# - Parte 04 - Estruturas de controle e Strings (20)

Canivete shell
Canivete shellCanivete shell
Canivete shell
 
Canivete shell
Canivete shellCanivete shell
Canivete shell
 
Ling c
Ling cLing c
Ling c
 
Javascript para CSharpers 1 - Comparando
Javascript para CSharpers   1 - ComparandoJavascript para CSharpers   1 - Comparando
Javascript para CSharpers 1 - Comparando
 
Estruturas
EstruturasEstruturas
Estruturas
 
Java Básico
Java BásicoJava Básico
Java Básico
 
Java Básico :: Introdução
Java Básico :: IntroduçãoJava Básico :: Introdução
Java Básico :: Introdução
 
Desenvolvimento em .Net - Boas Praticas De Desenvolvimento
Desenvolvimento em .Net - Boas Praticas De DesenvolvimentoDesenvolvimento em .Net - Boas Praticas De Desenvolvimento
Desenvolvimento em .Net - Boas Praticas De Desenvolvimento
 
Introdução ao JS1.pptx
Introdução ao JS1.pptxIntrodução ao JS1.pptx
Introdução ao JS1.pptx
 
Introdução à MEAN Stack
Introdução à MEAN StackIntrodução à MEAN Stack
Introdução à MEAN Stack
 
Apresentação 1 o que foi aprendido
Apresentação 1   o que foi aprendidoApresentação 1   o que foi aprendido
Apresentação 1 o que foi aprendido
 
Minicurso de Expressões Regulares
Minicurso de Expressões RegularesMinicurso de Expressões Regulares
Minicurso de Expressões Regulares
 
Atribuições
AtribuiçõesAtribuições
Atribuições
 
Apostila aed
Apostila aedApostila aed
Apostila aed
 
Microsoft S2B - C# ASP.NET
Microsoft S2B - C# ASP.NETMicrosoft S2B - C# ASP.NET
Microsoft S2B - C# ASP.NET
 
PHP - Strings
PHP - StringsPHP - Strings
PHP - Strings
 
iOS 8 com swift
iOS 8 com swiftiOS 8 com swift
iOS 8 com swift
 
S2 b desenvolvimento de sistemas [reparado]
S2 b   desenvolvimento de sistemas [reparado]S2 b   desenvolvimento de sistemas [reparado]
S2 b desenvolvimento de sistemas [reparado]
 
Desenvolvendo com Silverlight para WP7 Mango [Update]
Desenvolvendo com Silverlight para WP7 Mango [Update]Desenvolvendo com Silverlight para WP7 Mango [Update]
Desenvolvendo com Silverlight para WP7 Mango [Update]
 
mod5-estruturas-dadosdinamicas
mod5-estruturas-dadosdinamicasmod5-estruturas-dadosdinamicas
mod5-estruturas-dadosdinamicas
 

Mehr von Leonardo Melo Santos

Sencha Touch, RhoMobile, AppMobi e jQuery Mobile um comparativo entre platafo...
Sencha Touch, RhoMobile, AppMobi e jQuery Mobile um comparativo entre platafo...Sencha Touch, RhoMobile, AppMobi e jQuery Mobile um comparativo entre platafo...
Sencha Touch, RhoMobile, AppMobi e jQuery Mobile um comparativo entre platafo...Leonardo Melo Santos
 
Curso de OO com C# - Parte 03 - Plataforma .NET
Curso de OO com C# - Parte 03 - Plataforma .NETCurso de OO com C# - Parte 03 - Plataforma .NET
Curso de OO com C# - Parte 03 - Plataforma .NETLeonardo Melo Santos
 
Curso de OO com C# - Parte 01 - Orientação a objetos
Curso de OO com C# - Parte 01 - Orientação a objetosCurso de OO com C# - Parte 01 - Orientação a objetos
Curso de OO com C# - Parte 01 - Orientação a objetosLeonardo Melo Santos
 
Desenvolvimento de aplicações Java™ para TV Digital
Desenvolvimento de aplicações Java™ para TV DigitalDesenvolvimento de aplicações Java™ para TV Digital
Desenvolvimento de aplicações Java™ para TV DigitalLeonardo Melo Santos
 
Curso de J2ME - Parte 04 - Otimização
Curso de J2ME - Parte 04 - OtimizaçãoCurso de J2ME - Parte 04 - Otimização
Curso de J2ME - Parte 04 - OtimizaçãoLeonardo Melo Santos
 
Curso de J2ME - Parte 03 - Desenvolvimento de aplicações
Curso de J2ME - Parte 03 - Desenvolvimento de aplicaçõesCurso de J2ME - Parte 03 - Desenvolvimento de aplicações
Curso de J2ME - Parte 03 - Desenvolvimento de aplicaçõesLeonardo Melo Santos
 
Curso de J2ME - Parte 02 - Ambiente de desenvolvimento
Curso de J2ME - Parte 02 - Ambiente de desenvolvimentoCurso de J2ME - Parte 02 - Ambiente de desenvolvimento
Curso de J2ME - Parte 02 - Ambiente de desenvolvimentoLeonardo Melo Santos
 
Curso de J2ME - Parte 01 - Conceitos básicos
Curso de J2ME - Parte 01 - Conceitos básicosCurso de J2ME - Parte 01 - Conceitos básicos
Curso de J2ME - Parte 01 - Conceitos básicosLeonardo Melo Santos
 
Fundamentos de sistemas de informação
Fundamentos de sistemas de informaçãoFundamentos de sistemas de informação
Fundamentos de sistemas de informaçãoLeonardo Melo Santos
 
Conceitos básicos de programação orientada a objetos
Conceitos básicos de programação orientada a objetosConceitos básicos de programação orientada a objetos
Conceitos básicos de programação orientada a objetosLeonardo Melo Santos
 
Trabalho em equipe e ética no trabalho
Trabalho em equipe e ética no trabalhoTrabalho em equipe e ética no trabalho
Trabalho em equipe e ética no trabalhoLeonardo Melo Santos
 
Verificação e validação de software
Verificação e validação de softwareVerificação e validação de software
Verificação e validação de softwareLeonardo Melo Santos
 
Marketing pessoal e as redes sociais
Marketing pessoal e as redes sociaisMarketing pessoal e as redes sociais
Marketing pessoal e as redes sociaisLeonardo Melo Santos
 

Mehr von Leonardo Melo Santos (17)

Sencha Touch, RhoMobile, AppMobi e jQuery Mobile um comparativo entre platafo...
Sencha Touch, RhoMobile, AppMobi e jQuery Mobile um comparativo entre platafo...Sencha Touch, RhoMobile, AppMobi e jQuery Mobile um comparativo entre platafo...
Sencha Touch, RhoMobile, AppMobi e jQuery Mobile um comparativo entre platafo...
 
Curso de OO com C# - Parte 03 - Plataforma .NET
Curso de OO com C# - Parte 03 - Plataforma .NETCurso de OO com C# - Parte 03 - Plataforma .NET
Curso de OO com C# - Parte 03 - Plataforma .NET
 
Curso de OO com C# - Parte 01 - Orientação a objetos
Curso de OO com C# - Parte 01 - Orientação a objetosCurso de OO com C# - Parte 01 - Orientação a objetos
Curso de OO com C# - Parte 01 - Orientação a objetos
 
Scrum - Visão Geral
Scrum - Visão GeralScrum - Visão Geral
Scrum - Visão Geral
 
Desenvolvimento de aplicações Java™ para TV Digital
Desenvolvimento de aplicações Java™ para TV DigitalDesenvolvimento de aplicações Java™ para TV Digital
Desenvolvimento de aplicações Java™ para TV Digital
 
Web Services XML - .NET framework
Web Services XML - .NET frameworkWeb Services XML - .NET framework
Web Services XML - .NET framework
 
DotNet Remoting - .NET framework
DotNet Remoting - .NET frameworkDotNet Remoting - .NET framework
DotNet Remoting - .NET framework
 
Curso de J2ME - Parte 04 - Otimização
Curso de J2ME - Parte 04 - OtimizaçãoCurso de J2ME - Parte 04 - Otimização
Curso de J2ME - Parte 04 - Otimização
 
Curso de J2ME - Parte 03 - Desenvolvimento de aplicações
Curso de J2ME - Parte 03 - Desenvolvimento de aplicaçõesCurso de J2ME - Parte 03 - Desenvolvimento de aplicações
Curso de J2ME - Parte 03 - Desenvolvimento de aplicações
 
Curso de J2ME - Parte 02 - Ambiente de desenvolvimento
Curso de J2ME - Parte 02 - Ambiente de desenvolvimentoCurso de J2ME - Parte 02 - Ambiente de desenvolvimento
Curso de J2ME - Parte 02 - Ambiente de desenvolvimento
 
Curso de J2ME - Parte 01 - Conceitos básicos
Curso de J2ME - Parte 01 - Conceitos básicosCurso de J2ME - Parte 01 - Conceitos básicos
Curso de J2ME - Parte 01 - Conceitos básicos
 
Sistemas Workflow
Sistemas WorkflowSistemas Workflow
Sistemas Workflow
 
Fundamentos de sistemas de informação
Fundamentos de sistemas de informaçãoFundamentos de sistemas de informação
Fundamentos de sistemas de informação
 
Conceitos básicos de programação orientada a objetos
Conceitos básicos de programação orientada a objetosConceitos básicos de programação orientada a objetos
Conceitos básicos de programação orientada a objetos
 
Trabalho em equipe e ética no trabalho
Trabalho em equipe e ética no trabalhoTrabalho em equipe e ética no trabalho
Trabalho em equipe e ética no trabalho
 
Verificação e validação de software
Verificação e validação de softwareVerificação e validação de software
Verificação e validação de software
 
Marketing pessoal e as redes sociais
Marketing pessoal e as redes sociaisMarketing pessoal e as redes sociais
Marketing pessoal e as redes sociais
 

Curso de OO com C# - Parte 04 - Estruturas de controle e Strings

  • 1. C# Estruturas de controle, strings e nullable types Leonardo Melo Santos http://about.me/leonardomelosantos
  • 2. Conteúdo programático ● Strings ○ Métodos ○ Formatação ○ StringBuilder ● Estruturas condicionais ○ if, switch ● Estruturas iterativas ○ while, for, foreach ● Nullable types
  • 3. Strings ● Classe System.String ● Palavra reservada “string” ● Escrita entre aspas duplas ● Valor imutável ○ Qualquer modificação gera outra string ● Operador de concatenação: + string texto = "Olá, " + "Maria";
  • 4. Strings - Operações ● Equals ● StartsWith ● EndsWith ● IndexOf ● ToLower ● ToUpper ● Split ● Trim
  • 5. Strings - Caracteres especiais ● Alguns caracteres são usados para operações especiais dentro da string ○ “n” – passa a próxima linha ○ “t” – tabulação ○ “a” – beep ○ “” – barra invertida
  • 6. String - Verbatim ● Para utilizar a string da forma que ela foi escrita ○ dispensando os caracteres especiais, utilizamos a string Verbatim ○ @ no início da string string texto = "Olá, Maria n"; string texto2 = @"Olá, Maria n";
  • 7. String - Formatação ● string.Format ● Parâmetros: ○ String com parâmetros a serem formatados ○ Valores a substituírem tais parâmetros DateTime data = DateTime.Now; string x = string.Format(“{0:dd/MM/yyyy}”, data); Console.WriteLine(x);
  • 8. String - Exemplos de formatação de datas ● dd/MM/yyyy hh:mm ○ Dia, mês e ano, com horas e minutos ○ Horas de 0 a 12 ● dd/MM/yyyy HH:mm ○ Dia, mês e ano, com horas e minutos ○ Horas de 0 a 24 ● dddd dd/MM/yyyy ○ dddd representa o nome do dia ○ Exemplo: “segunda-feira”
  • 9. String - Formatando números Padrão de Formatação de Strings Especificador Significado Saída c Valor monetário específico do local; R$ 4.834,50 d Inteiro geral 4834 e Notação Científica 4.834E+003 f Decimal de ponto fixo 4834.50 g Número geral 4834.5 n Formato usual específico do local para 4,834.50 (Reino Unido/EUA) números 4 834,50 (Europa Continental) p Notação de porcentagem 483.450,00% x Formato hexadecimal 1120
  • 10. String - Praticando formatação de números Double numeroDouble= 4864.5; int numeroInteiro = 4864; Console.WriteLine(String.Format("C = {0:c}", numeroDouble)); Console.WriteLine(String.Format("D = {0:d}", numeroInteiro)); Console.WriteLine(String.Format("E = {0:e}", numeroDouble)); Console.WriteLine(String.Format("F = {0:f}", numeroDouble)); Console.WriteLine(String.Format("G = {0:g}", numeroDouble)); Console.WriteLine(String.Format("N = {0:n}", numeroDouble)); Console.WriteLine(String.Format("P = {0:p}", numeroDouble)); Console.WriteLine(String.Format("X = {0:x}", numeroInteiro)); Console.WriteLine(numeroDouble.ToString("##########.##")); Console.WriteLine(numeroDouble.ToString("0000000000.00"));
  • 11. Strings x performance ● Cada alteração na string cria outra instância ● Várias concatenações prejudicam performance ● Classe StringBuilder ○ Namespace System.Text ○ Não concatena, adiciona strings ○ Só cria a string ao chamar ToString()
  • 12. Strings e StringBuilder Evita criação de novas strings desnecessárias StringBuilder texto = new StringBuilder(); texto.Append("Olá, "); texto.Append(" pessoal do curso "); texto.Append(" de C# "); string textoFinal = texto.ToString(); Console.WriteLine(textoFinal);
  • 14. Condicional if ● Executa comandos caso teste seja ● verdadeiro ● Caso não seja, executa comando do bloco ● “else”, caso exista ● Blocos podem ser aninhados ● Bloco else pode ter condição (else if) if (3 < 2) { Console.WriteLine("Valor menor!“); }
  • 15. Condicional if string texto = Console.ReadLine(); int idade = Convert.ToInt32(Console.ReadLine()); if (idade >= 0) { if (texto.Equals("Maria")) { if (idade > 0 && idade < 18) { Console.WriteLine("A escolhida é uma adolescente"); } else if (idade > 0 && idade < 150) { Console.WriteLine("A escolhida é uma mulher adulta"); } } else { Console.WriteLine("Você escolheu uma opção errada"); } } else { Console.WriteLine("Idade deve ser positiva"); }
  • 16. Condicinal switch ● Permite escolha de várias opções para o valor de uma variável ● Substitui vários “blocos if” encadeados ● O teste do tipo do valor é feito através do bloco case ● Cada bloco case possui comandos e a instrução break ao final ● Bloco default executa caso nenhum bloco case seja executado ● Aceita strings, números, enumerações, etc...
  • 17. Condicional switch - Exemplos switch (texto) { case "Maria": Console.WriteLine("Você escolheu uma mulher"); break; case "João": Console.WriteLine("Você escolheu um homem"); break; default: Console.WriteLine("Valor incorreto!"); break; } Possibilidade de agrupar cases: case "Maria": case "João": //faça algo break;
  • 18. Iteração com while ● Executa comandos enquanto a expressão booleana é verdadeira ● Pode ser aninhado ● O comando break sai do laço while ● Evite loops infinitos string nome = ""; while (nome != "Sérgio") { Console.WriteLine("Opção inválida. Nome: "); nome = Console.ReadLine(); }
  • 19. Iteração com do while ● Executa uma operação e só depois testa a expressão ● Ideal para casos em que é necessário execução de no mínimo uma vez string nome = ""; do { Console.Write("Digite um nome:"); nome = Console.ReadLine(); } while (nome != "Sérgio") ;
  • 20. Iteração com for ● O bloco while não controla a quantidade de iterações ● Utiliza variável de iteração ● Executa comandos enquanto expressão for verdadeira ● Modifica valor da variável de iteração ● Qualquer dos 3 comandos internos do for é opcional for (int i = 0; i < 10; i++) { Console.WriteLine("Motrando número " + i); }
  • 21. Iteração com foreach ● Uma opção para iteração em coleções ● Não necessita de tratamento do tamanho da coleção ● Utiliza variável representando o valor atual na coleção ● Estrutura “foreach algo in colecao” string texto = Console.ReadLine(); foreach (char c in texto.ToCharArray()) { Console.WriteLine(“Letra:" + c); }
  • 22. Nullable types ● Permite que os "value types" aceitem null como valor de variável ○ Value types: Structs, Enumerations, Numeric types (decimal, float, double, byte, short, int, long, ...), bool, "User defined structs" ● A variável passa a ter uma propriedade chamada “HasValue” e outra chamada "Value" ● Sintaxe: ○ <tipo>? <identificadorVariavel>; ○ Nullable<tipo> <identificadorVariavel>;