Linguagem C#
Versão – 090528
Prof.: Mauro César Lopes
Sumário
•
•
•
•
•
•
•
Identificadores
Tipos
Constantes
Enumerações
Expressões
Declarações
Bloco de declarações
Identificadores
• São nomes utilizados para identificar os
elementos nos seus programas. Esses
elementos podem ser: namespace
(espaço de nomes), classes, métodos,
variáveis, etc.
• Podemos usar apenas letras, número e
sublinhado para compor o nome dos
identificadores
Palavras Chaves
• C# reserva 77 identificadores, os quais
não poderão ser utilizados para outros
propósitos
• Alguns exemplos: bool, break, char,
default, enum, float, ...
Variáveis
• Uma variável é definida como um lugar onde podemos
armazenar dados temporariamente e usá-los
posteriormente
• Normalmente um variável possui um nome
(identificador) que é usado para acessar seu conteúdo
• Uma variável poderá armazenar um número inteiro, de
ponto flutuante, um caractere, uma cadeia de caracteres
(String) , um valor booleano, etc.
• O nome de uma variável pode conter letras, número e ‘_’
(não pode haver sinais de pontuação e espaços em
branco)
Boas práticas de programação
• Adote uma convenção de nomes que torne
claras as variáveis definidas
– Não utilize sublinhados nos identificadores
Exemplo:
Use valorMercadoria ao invés de
valor_da_mercadoria
– Não use identificadores cuja única diferença seja
entre letras maiúsculas e minúsculas
– É importante notar que C# faz diferença entre letras
maiúsculas e minúsculas
– Comece o nome com uma letra
Tipos de variáveis
Define o tipo de dados que a variável irá
armazenar
• Inteira
– byte, short, int, long
• Ponto flutuante
– float, double, decimal
• Caractere
– char
• Booleana
– bool: valores true (verdadeiro), false (falso)
Tipos de variáveis
Tipo
Tamanho
(em bytes)
Tipo .NET
Descrição
byte
1
Byte
Sem sinal (0-255)
char
2
Char
Caractere Unicode
bool
1
Boolean
Booleano (Verdadeiro ou Falso)
sbyte
1
Sbyte
Com sinal (-128 a 127)
short
2
Int16
Com sinal
ushort
2
UInt16
Sem sinal
int
4
Int32
Com sinal
uint
4
UInt32
Sem sinal
float
4
Single
Números de ponto flutuante
double
8
Double
Números de ponto flutuante de precisão dupla
decimal
16
Decimal
Valores monetários
long
8
Int64
Números inteiros
ulong
8
UInt64
Tipos de variáveis (2)
Tipo
Tamanho
(em bytes)
Tipo
.NET
Descrição
byte
1
Byte
Sem sinal (0-255)
char
2
Char
Caractere Unicode
bool
1
Boolean
Booleano (true=Verdadeiro ou false=Falso)
short
2
Int16
Com sinal (-32.768 a 32.767)
int
4
Int32
Com sinal (-2.147.483.648 e 2.147.483.647)
float
4
Single
Números de ponto flutuante. Armazena os valores de
aproximadamente +/- 1,5*10-45 até aproximadamente +/3,4*10^38 com sete número significativos. Usa o sufixo F
double
8
Double
Números de ponto flutuante de precisão dupla (com 15 a 16
números significativos)
decimal
16
Decimal
Valores monetários. Precisão fixa até 28 dígitos e a posição
do ponto decimal. É normalmente usado em cálculos
financeiros. Exibe sufixo “m” ou “M”
long
8
Int64
Números inteiros com sinal de -9.223.372.036.854.775.808 a
9.223.372.036.854.775.807
Variáveis
• Uma variável poderá ser signed (sbyte,
short, int) ou unsigned (byte, ushort, uint),
isto é, com sinal ou sem sinal.
• Uma variável unsigned possui apenas
valores positivos
• Uma variável signed possui valores
positivos e negativos
Exemplos de declaração de
variáveis
•
•
•
•
•
int a, idade;
char ch, caracter;
float f, valor;
double d;
string s;
Toda variável deverá ser declarada
explicitamente antes de ser usada
Atribuição de valores a
variáveis
• Podemos atribuir o valor a uma variável
usando o símbolo ‘=‘ (operador de
atribuição)
• Exemplos:
int a = 1; // atribui o valor 1 a variável inteira a
float f = -8.76F; // observe o sufixo F
char c=‘a’;
Atribuições
• Se tentarmos atribuir um número a uma
propriedade do tipo texto o programa não irá
compilar
• Por exemplo
– value.text = 1;  erro
– value.text = “1”;  ok, porém o número um está
sendo tratado como texto e não como número
– value.text = string.Parse(1);  o número um é
convertido de inteiro para uma string pelo uso do
método parse da classe string
Comentários
• // comentário até o final da linha
• /*
... Comentário multilinha
*/
Os comentários são ignorados pelo
compilador, porém são úteis aos
desenvolvedores porque ajudam a
comentar o que o programa está fazendo
Operadores
• Numéricos  agem em valores para criar
novos valores
• Lógicos ou Booleanos  é um operador
que faz cálculos cujo resultado é
verdadeiro ou falso.
• Relacionais  são usados para descobrir
se um valor é menor ou maior que outro
do mesmo tipo
• Binários  agem sobre dois operandos
Operadores Numéricos
++, --
Incremento, decremento
+, -, *, /, % adição, subtração, multiplicação, divisão, módulo (resto)
Exemplo:
int
int
int
x =
y =
a = 7;
b = 3;
x,y;
a / b;
a % b;
Operador ++
int x;
int y;
x = 23;
y = x++; // operador pós-fixado
Console.WriteLine(x + " " + y); // 23 24
x = 23;
y = ++x; // operador pré-fixado
Console.WriteLine(x + " " + y); // 24 e 24
Operadores Relacionais e Lógicos
(Booleanos)
Um operador booleano é um operador que faz um cálculo cujo resultado é true
(verdadeiro) ou false (falso)
Operador
==, !=
>, >=, <, <=
Ação
Igual a, diferente de
Maior que, maior ou igual a, menor que, menor ou igual a
&&
“E” lógico (AND)
||
“OU” lógico (OR)
!
“NÃO” lógico
Operadores Lógicos
Podem ser usados para testar condições mais complexas
combinando condições simples
• Operador && (“e” lógico - AND)
• Operador || (“ou” lógico - OR)
• Operador ! (“não” lógico - NOT)
Exemplo:
bool porcentagemValida = (porcentagem>=0) &&
(porcentagem<=100);
Operadores Relacionais
>
Maior que
>=
maior ou igual a
<
menor que
<=
menor ou igual a
Operadores Lógicos Bit a Bit
&
“E” binário
^
“XOR” ou-exclusivo
|
“OU” binário
~
“NÃO” binário
>>
deslocamento de bits a direito
<<
deslocamento de bits a esquerda
Operadores de igualdade e
atribuição
Não confunda o operador de igualdade ‘==‘
com o operador de atribuição ‘=‘.
A expressão x==y compara x com y tem
valor true se os dois valores forem
idênticos e false caso contrário.
Já a expressão x=y atribui o valor de y a
variável x
Expressões
• São combinações de variáveis, constantes
e operadores
• Quando montamos expressões temos que
considerar a ordem em que os operadores
são executados
• Essa ordem é definida pela tabela de
precedência
Precedência de Operadores
Categoria
Operadores
Primário
(x) x.y x’y f(x) a[x] x++ x– new typeof sizeof checked
unchecked stackalloc
Unário
+ - ! ~++x –x (T)x *x &x
Multiplicativo
* / %
Aditivo
+ -
Deslocamento
<< >>
Relacional
< > <= >= is as
Igualdade
== !=
Lógico AND
&
Lógico XOR
^
Lógico OR
|
Condicional AND
&&
Condicional OR
||
Condicional
?:
Atribuição
= *= /= %= += -= <<= &= ^= |=
Seqüência de comandos
• Um programa é uma seqüência de
comandos ou instruções (executa uma
ação)
<comando 1>;
<comando 2>;
...
<comando N>;
Bloco de comandos
• Um bloco é uma seqüência de instruções
agrupadas entre uma chave de abertura
({) e uma de fechamento (})
• Um bloco inicia um novo escopo
• Novas variáveis poderão ser definidas
dentro do bloco, porém seus valores serão
perdidos no final do bloco
Comandos condicionais
• Permitem que uma expressão seja
avaliada e que uma ação seja executada
no caso da expressão ser avaliada
verdadeira (true) ou falsa (false).
Comando if
É usado para que possamos escolher entre
dois blocos diferentes de código com base
no resultado de uma expressão booleana.
A sintaxe de uma instrução if é:
if(expressãoBooleana)
instrução-1;
else
instrução-2;
Comando if - Exemplo
int a = 5;
if(a<0)
Console.WriteLine (“a é negativo”);
else
Console.WriteLine (“a é positivo”);
Comando if - Exemplo
int a = 5;
if(a<0)
{
// avalia a condição a<0
Console.WriteLine (“a é negativo”);
}
else
{
Console.WriteLine (“a é positivo”);
}
Comandos if em cascata
if(dia==0)
nome=“Domingo”;
else if (dia==1)
nome=“Segunda-Feira”;
else if (dia==2)
nome=“Segunda-Feira”;
else if (dia==3)
nome=“Segunda-Feira”;
else if (dia==4)
nome=“Segunda-Feira”;
else if (dia==5)
nome=“Segunda-Feira”;
else if (dia==6)
nome=“Segunda-Feira”;
else if (dia==1)
nome=“Segunda-Feira”;
Switch
switch (expressãoDeControle)
{
case expressãoConstante:
instruções;
break;
case expressãoConstante:
instruções;
break;
...
default:
instruções;
break;
}
Switch
• expressãoDeControle: é avaliada uma
única vez
• expressãoConstante
Comparação if / switch
if(dia==0)
nome=“Domingo”;
else if(dia==1)
nome=“segunda-feira”;
...
else
nome=“desconhecido”;
switch(dia)
{
case 0:
nome=“Domingo”;
break;
case 1:
nome=“segunda-feira”;
break
...
default:
nome=“desconhecido”;
break;
}
Controle de Fluxo
Um loop (laço) é uma série de instruções
que devem ser repetidas até que uma
certa condição seja encontrada
Controle de Fluxo (2)
• Loops (laços) com teste no início (while)
• Loops (laços) com testes no final
(do/while)
• Loops (laços) de tamanho definido (for)
• Saindo de loops (laços) antes do término
(break)
• Retestando a condição em loops (laços)
(ex: continue)
Comando while
Repete o laço enquanto uma condição for
verdadeira
Exemplo:
int i=0;
while(i<5) {
Console.WriteLine (i);
i = i + 1;
}
Comando do/while
int i=0;
do {
Console.WriteLine("i={0}",i);
i = i + 1;
} while (i<5);
Exemplo do uso de do/while
do {
Console.WriteLine(“Menu”);
Console.WriteLine(“1. Incluir”);
Console.WriteLine(“2. Alterar”);
Console.WriteLine(“3. Excluir”);
Console.WriteLine(“4. Consultar”);
Console.WriteLine(“0. Sair”);
String opcao=Console.ReadLine();
} while(opcao!=“0”);
Exercício
• Escreva uma aplicação que leia e exiba a
tecla lida enquanto a tecla ‘s’ não for
pressionada. A aplicação deverá contar
também o número de teclas pressionadas
e exibi-las no final da aplicação
Comando for
Repete um loop (laço) um determinado
número de vezes
Exemplo:
int i = 0;
for(i=0;i<5;i++) {
Console.WriteLine("i={0}",i);
}
Comparação for x while
for(
inicialização;
condição;
incremento
)
declaração;
inicialização;
while(condição)
{
declaração;
incremento;
}
Comparação for x while
int i;
for(i=0; i<=9; i++)
{
Console.WriteLine(i);
}
int i;
i=0;
while(i<=9)
{
Console.WriteLine(i);
i++;
}
Loop Infinito
int i;
for(;;)
{
Console.WriteLine(i);
}
int i;
i=0;
while(true)
{
Console.WriteLine(i);
}
Comando break
int i=0;
while (i++<10) {
Console.WriteLine("i={0}",i);
if(i==5) {
break;
}
}
Exemplo do Comando Break
int numTeclas=0;
while (true) { // loop infinito
// leia uma tecla em ch
if(ch==‘s’) {
break;
}
// exibe a tecla pressionada
// incrementa contador de teclas pressionadas
numTeclas++;
}
Comando continue
int 0=0;
while (i<10) {
if(i%2!=0) {// testa se o número for par
continue;
}
// exibe os números ímpares
Console.WriteLine(i);
i++;
}
Formatação de Cadeia de
Caracteres
{númParâmetro,espaçoReservado:formatação}
onde:
• númParâmetro: indica que parâmetro está
sendo formatado
• espaçoReservado: indica o número de
caracteres mínimos para ocupar com o
parâmetro
• formatação: indica formatação específica
do tipo de dados a utilizar
Formatação de cadeia de
caracteres - Exemplo
Especifica
ção
Aplicação
Significado
C
valores em geral
valor monetário de acordo com o pais
local
D
E
F
G
inteiros
inteiros genéricos
valores em geral
notação científica
valores reais
numero em formato de ponto fixo
valores em geral
geral (é utilizada a representação mais
adequada ao número)
N
P
X
valores em geral
numero de acordo com o pais local
valores em geral
percentagem
inteiros
notação científica
Exemplo
• {0,4}  parâmetro 0, 4 espaços
reservados com alinhamento à direita,
sem formatação específica
• {0,-4}  parâmetro 0, 4 espaços
reservados com alinhamento à esquerda,
sem formatação específica
Exemplos
•
•
•
•
•
•
•
•
•
Console.WriteLine("{0:C}", 1000.32);
Console.WriteLine("{0:D}", 23);
Console.WriteLine("{0:E2}", 13.322);
Console.WriteLine("{0:F2}", 13.322);
Console.WriteLine("{0:G}", 13.322);
Console.WriteLine("{0:G}", 13);
Console.WriteLine("{0:N}", 1000000.32);
Console.WriteLine("{0:P}", 0.43);
Console.WriteLine("{0:X}", 29);
Concatenção de Strings
• Console.WriteLine(“mauro “ + “cesar “ +
“lopes”);
• Console.WriteLine(“3 “ + “7”);
• Retorna a string 37 e não a operação de
3+7=10
• Para obtermos a soma de 3 + 7 teríamos
que proceder da seguinte forma:
• Console.WriteLine(int.Parse(“3“) +
int.Parse(“7”));
Conversão de Tipos
• Use o método chamado Int32.Parse ou
int.Parse para converter um valor contido
em uma string em um inteiro se você
precisar realizar cálculos aritméticos em
valores armazenados em string
Conversão de Tipos
// o método Console.ReadLine() recebe
// retorna uma variável do tipo String
String s = Console.ReadLine();
// quando temos um número representado por
// uma string não podemos fazer operações aritméticas com ele
// Abaixo estão definidas as variáveis i, f e d
int i;
float f;
double d;
// converte uma variável do tipo String (s no exemplo) em um inteiro
i = int.Parse(s);
// converte uma variável do tipo String (s no exemplo) em um float
f = float.Parse(s)
// converte uma variável do tipo String (s no exemplo) em um double
d = double.Parse(s)
Definição de Constantes
const <tipo> <nomeDaConstante> = <valor>
Exemplos:
const int numLinhas = 3;
const int numColunas = 2;
Arrays
• Um array é um vetor ou matriz que
permite guardar um certo conjunto de
variáveis, todas do mesmo tipo
Vetores
• Para criar um vetor que armazene N
elementos de um certo tipo (identificado
por tipoDoVetor), utiliza-se a seguinte
forma:
tipoDoVetor[] nomeDoVetor = new
tipoDoVetor[N]
Vetores - Exemplo
• Criação de um vetor com a nota de prova
de cada aluno da turma
int numAlunos=30;
double[] notas = new notas[numAlunos];
Vetores
• Para acessar cada elemento do array,
usa-se colchetes:
// coloca na posição 3 do vetor a nota 7.9
notas[3]=7.9;
// atribui a nota da posição 0 do vetor
double nota = notas[0];
Vetores
• Observe que o primeiro elemento do array
é o elemento 0
[0]  primeiro elemento
[1]  segundo elemento
...
[N-1]  enésimo elemento
Criação e inicialização de um vetor
// Cria e inicializa um vetor
string[] nomeDePessoas = { “Antonio”,
“Jose”, “Joao”};
string[] nomeDePessoas = new String[] {
“Antonio”, “Jose”, “Joao”};
Obs: o compilador determina qual deverá
ser o tamanho do vetor
Matrizes Multidimensionais
• São matrizes com mais de uma dimensão
(duas, três, quatro, ...)
Exemplo:
Uma matriz bidimensional de 2 linhas por 3
colunas (2x3)
int[,] matriz = new [2,3];
Acesso de elementos
• matriz[1,2]=35;
• int valor = matriz[1,2];
Exemplo - Matriz com três
dimensões
double[,,] matriz3D = new double[10,10,10];
matriz3D[0,0,1]=1.0;
matriz3D[0,1,0]=0.65;
...
Inicialização de Matrizes
// inicializa uma matriz bidimensional (2 x 3),
isto é, duas linhas e três coluna
int[,] matriz = {
{1,2,3},
{4,5,6}
};
Inicialização de Matrizes
// inicializa uma matriz bidimensional (3 x 2),
isto é, três linhas e duas coluna
int[,] matriz = {
{1,2},
{3,4},
{5,6}
};
Alguns métodos da matrizes
• matriz.Length  obtém o número de
elementos da matriz
• matriz.Rank  obtém o número de
dimensões da matriz
• matriz.GetLength(dim)  obtém o
número de elementos da dimensão dim
Soma de Matrizes
int[,] matrizA = { {1,2,3}, {4,5,6} };
int[,] matrizB = { {4,-1,2}, {-3,-7,-6} };
int[,] matrizC = new int[2,3];
// C = A + B
Multiplicação de Matrizes
int[,] matrizA = { {1,2}, {4,5} };
int[,] matrizB = { {4,-1}, {-3,-7} };
int[,] matrizC = new int[2,2];
// C = A x B
Condições:
- o número de colunas da matriz A deverá ser igual
ao número de linhas da matriz B
- a matriz resultante, C, terá a dimensão dada pelo
número de linhas da matriz A e o número de
colunas da matriz B
Multiplicação de Matrizes
Cada elemento c[i,j] será dado pela
multiplicação dos elemento da linha i
multiplicados pelos elementos da linha j
c[i,j] += a[i,k] * b[k,j]
onde k varia de 0 a número de linhas da
matriz A ou número de colunas da matriz
B, que são iguais
Criando um método para exibir
uma matriz
Backup - Slides
Palavras chave da Linguagem C#
abstract
as
base
bool
break
byte
case
catch
char
checked
class
const
continue
decimal
default
delegate
do
double
else
enum
event
explict
extern
false
finally
Palavras chave da Linguagem C#
(2)
fixed
float
for
foreach
get
goto
if
implict
in
int
interface
internal
is
lock
long
namespac
e
new
null
object
operator
out
override
params
private
protected
Palavras chave da Linguagem C#
(3)
public
readonly
ref
return
sbyte
sealed
set
short
sizeof
stackalloc
static
string
struct
switch
this
throw
true
try
typeof
uint
ulong
unchecke
d
unsafe
ushort
using
Palavras chave da Linguagem C#
(4)
value
virtual
void
volatile
while
Download

Exemplo - MLTech