Linguagem C# Versão – 091008 Prof.: Mauro César Lopes.

Post on 17-Apr-2015

109 Views

Category:

Documents

1 Downloads

Preview:

Click to see full reader

Transcript

Linguagem C#

Versão – 091008Prof.: 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 (Exemplo: contador e Contador)

É 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 (sem parte fracionária) byte, sbyte, short, ushort, int, uint, long, ulong

Ponto flutuante (é capaz de representar valores fracionários) 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

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

Operadores Numéricos (ou Aritméticos)

++, -- Incremento, decremento

+, -, *, /, % adição, subtração, multiplicação, divisão, módulo (resto)

Exemplo:

int a = 7;int b = 3;int x,y;x = a / b;y = a % b;

Operador ++

int x;int y;

x = 23;y = x++; // operador pós-fixadoConsole.WriteLine(x + " " + y); // 23 24

x = 23;y = ++x; // operador pré-fixadoConsole.WriteLine(x + " " + y); // 24 e 24

Operadores Relacionais e Lógicos (Booleanos)

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

Um operador booleano é um operador que faz um cálculo cujo resultado é true (verdadeiro) ou false (falso)

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 Lógicos (Tabela Verdade)

Expr1

Expr2

AND

True True True

True False False

False True False

False False False

Expr1 NOT

False True

True False

Expr1

Expr2

OR

True True True

True False True

False True True

False False False

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 Atribuição

Operador

Uso

= Atribuição simples. Atribui o valor localizado a direita do '=' a variável 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, isto é, define onde as variáveis serão visíveis

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 (expressão

relacional){ // avalia a condição a<0 Console.WriteLine ("a é negativo");}else{ Console.WriteLine ("a é positivo");}

Comandos if em cascataif(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

Basicamente temos duas formas de controlar um laço: 1) laço controlado por contador

usa-se um contador para controlar o número de repetições do laços

o contador deverá ser decrementado ou incrementado a cada iteração visando que atinja uma condição de parada do laço

2) laço controlado por sentinela é necessário usar uma variável com um valor de sentinela o laço estará ativo enquanto a condição dada pela sentinela

permanecer sem alteração o valor da sentinela deverá ter seu valor alterado para que

o laço seja interrompido

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 i=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 qual parâmetro está

sendo formatado (0, 1, ...) 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 inteiros inteiros genéricos

E valores em geral

notação científica

F valores reais numero em formato de ponto fixo

G valores em geral

geral (é utilizada a representação mais adequada ao número)

N valores em geral

numero de acordo com o pais local

P valores em geral

percentagem

X 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);

Exemplos (2) Console.WriteLine("{0,8:C}", 1000.32); Console.WriteLine("{0,8:D}", 23); Console.WriteLine("{0,8:E2}", 13.322); Console.WriteLine("{0,8:F2}", 13.322); Console.WriteLine("{0,8:G}", 13.322); Console.WriteLine("{0,8:G}", 13); Console.WriteLine("{0,8:N}", 1000000.32); Console.WriteLine("{0,8:P}", 0.43); Console.WriteLine("{0,8: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 StringString 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 dint i;float f;double d;// converte uma variável do tipo String (s no exemplo) em um inteiroi = int.Parse(s);// converte uma variável do tipo String (s no exemplo) em um floatf = float.Parse(s)// converte uma variável do tipo String (s no exemplo) em um doubled = double.Parse(s)

Definição de Constantes

const <tipo> <nomeDaConstante> = <valor>

Exemplos:const int numLinhas = 3;const int numColunas = 2;

Arrays

O array é uma estrutura de dados de tamanho finita que armazena elementos do mesmo tipo.

Possui acesso direto a cada elemento através de índices

O primeiro elemento do array é acessado através do índice 0. Se o array possuir n elementos, então o índice no n-ésimo elemento será dado por n-1

Vetores

Para criar um vetor que armazene N elementos de um certo tipo (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

double[numAlunos];

Vetores

Para acessar cada elemento do array, usa-se o índice do elemento entre colchetes:

// coloca na posição 3 (isto é, 4ª posição) do// vetor a nota 7.9notas[3]=7.9;// atribui a nota da posição 0 do vetordouble 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 vetorstring[] 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 int[2,3];Uma matriz tridimensional de 3 linhas, por 3

colunas por 3 níveis de profundidade é definida como:

int[,,] matriz3D = new int[3,3,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 (inicia por 0)

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]; // duas

linha e// três colunas

// 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 BCondiçõ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

static void print(double[,] a) {

// numero de linhas int m = a.GetLength(0); // numero de colunas int n = a.GetLength(1);

for (int i = 0; i < m; i++) { for (int j = 0; j < n; j++) { Console.Write("a[{0},{1}]={2}",i,j,a[i, j]+"\t"); } Console.WriteLine(); }

}

Laço foreach/in

Usado para percorrer arrays ou coleções

Não necessita testar condição booleana para garantir sua execução

Quando todos os elementos do array ou coleção tiverem sido varridos, o laço será abandonado

foreach/in

string[] alunas = {"giovanna","fabiana","livia","iris"};

// percorre os nomes presentes no array// alunasforeach (string nome in alunas){ Console.WriteLine(nome);}

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

namespace

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 unchecked

unsafe ushort using

Palavras chave da Linguagem C# (4)

value virtual void volatile while

Classe String

Propriedades Métodos

Propriedades e Métodos

Length retorna o número de caracteres da String

ToUpper() converte para maiúsculas ToLower() converte para minúscula IndexOf() retorna a primeira

ocorrência do caracter na string LastIndexOf() retorna a última

ocorrência do caráter na string Substring() Remove

top related