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";
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
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>;