Você está na página 1de 58

1

Linguagem de
Programação Comercial
Recursos do Ambiente de Desenvolvimento
Inovações na Linguagem e Sintaxe

2
Introdução

Introdução: Linguagem C#
Estruturas básicas da linguagem
Tipos
Atribuição
Operador =
Operadores “abreviados”
Operadores de incremento/decremento
Exemplo prático 1

3
Introdução
Comandos Condicionais
if/else
switch/case
operador ternário
Exemplo prático 2
Comandos de Loop
while e do/while
for
quebra de fluxo: break e continue
Exemplo prático 3 (console)
4
Introdução
Fluxo de erros
Exceções
throw
try/catch/finally
Exemplo prático 4 (console)
Estruturas de dados – parte 1
Arrays
Comando foreach
Exemplo prático 5
5
Introdução: Linguagem C#
100% Orientada a objetos
Tudo pertence a uma classe
Não existe escopo “global”
Baseada em eventos
Clique de um botão
Seleção de um elemento em uma lista
“Tick” de um relógio
Sintaxe similar a C, C++ e Java
“Case sensitive” ( Palavra  PALAVRA 
palavra )
6
Introdução: Linguagem C#
Statements (comandos)
Delimitados por ;
Blocos de código delimitados por { }
Comentários
Comentários de uma linha //
Comentários de múltiplas linhas /* */
Comentários para documentação ///
Declaração de variáveis
<tipo> <nome da variável>;
<tipo> <nome da variável> = <valor inicial>;
7
Introdução: Linguagem C#

Tipo Descrição Tamanho Faixa


(bits)
int Inteiros 32 -231 a 231-1
long Inteiros (grandes) 64 -263 a 263-1
float Pto. flutuante 32 ±3.4 × 1038
double Pto. flutuante 64 ±1.7 × 10308
(maior precisão)
decimal Valores monetários 128 28 casas
significativas
string Alfanuméricos 16 p/caracter
char Caracter 16 0 a 216-1
alfanumérico
bool Booleanos 8 true ou false

8
Introdução: Linguagem C#

Constantes
<visibilidade> const <tipo> <nome> = <valor>;
Ex: public const double PI = 3.141593;

Enumerações
Conjunto limitado de valores
enum Estacoes
{Primavera,Verao,Outono,Inverno};

9
Introdução: Linguagem C#

Estruturas
Tipos complexos de dados
Agregam outros tipos
Ex:
struct Date
{
public int year;
public int month;
public int day;
}

10
Introdução: Linguagem C#

Estruturas
Membros chamados através de .
Ex:
Date data;
data.year=2008;
data.month=8;
data.day=1;

11
Atribuição
Define o valor de uma variável baseado em
uma expressão
Sintaxe:
<variável> = <expressão>
Ex: dias = dias + 30;

No caso acima, pode ser escrito


resumidamente:
Ex: dias += 30;

Válido para outras operações: -=, *=, /=, %= etc..


12
Atribuição

Incremento e Decremento
Operadores ++ e --
Podem ser pré-fixados ou pós-fixados
Ex: ++p;(pré) x--; (pós)
Pré: soma ou subtrai, depois avalia o
valor
Pós: avalia o valor, depois soma ou
subtrai

13
Atribuição
...

int i=2;

int j = ++i;
//valores aqui : i = 3 e j = 3

i=5;

j= i++;

//valores aqui: i=6 e j = 5

...
14
Exemplo Prático 1

15
Comandos condicionais

Define uma decisão no fluxo do


programa
Executa um trecho do código
DEPENDENDO da situação
if/else – decisão (se verdade isto,
senão isso)
switch/case – múltipla seleção
operador ternário (?:) – “atribuição
condicional”
16
Comando condicionais – if/else

if (expressão booleana – true ou false)


{
código executado se verdadeiro
}
else
{
código executado se falso
}

17
Comando condicionais – Operadores booleanos

Operadores de comparação tem


resultados booleanos:
< , > , <= , >= , == e !=
Operadores lógicos:
& (AND), | (OR) e ^ (XOR)
Operadores condicionais:
&& (AND) e || (OR) – sem espaços !!!
Só avaliam o segundo membro se o
primeiro for true (&&) ou false (||) – short
circuit evaluation
18
Comando condicionais – switch/case
switch (expressão)
{
case VALOR1:
código executado se expressão = VALOR1
break;
case VALOR2:
case VALOR3:
código executado se expressão = VALOR2 ou
VALOR 3
break;
default:
código executado se NDA
break;
}
19
Comando condicionais – switch/case

Os blocos de código não possuem { }


Cada bloco deve terminar com um
break
Exceção: bloco vazio
A expressão pode ser strings ou
valores “integrais” (inteiros,
caracteres, enumeradores)

20
Comando condicionais – operador ?:

Utilizado no caso de uma atribuição


onde a variável pode receber um
valor ou outro dependendo de uma
condição (expressão booleana)
Sintaxe
(expressao)? valor se true : valor se
false

Operador Ternário: 3 elementos


21
Comando condicionais – operador ?:

string classificacao = “”;


if ( (numero % 2) == 0)
{
classificacao = “par” ;
}
else
{
classificacao = “ímpar”;
}
string classificacao = ((numero % 2) == 0)?”par”:”ímpar”;

22
Exemplo Prático 2

23
Comandos repetitivos

Loops
Define um conjunto repetitivo de
comandos
Executa um trecho de código
repetidas vezes até uma condição
de parada
while
do/while
for

24
Comando repetitivos – while

while (expressão booleana)


{
trecho de código a ser repetido
}

25
Comandos repetitivos - while

Repete enquanto a expressão for


verdadeira
Avalia a expressão antes de executar
o código repetitivo (corpo do loop)
Corpo do loop pode executar 0
vezes

26
Comando repetitivos – do/while

do
{
trecho de código a ser repetido
}
while (expressão booleana)

27
Comandos repetitivos – do/while

Similar ao while
Repete enquanto a expressão for
verdadeira
Executa o corpo do loop antes de
verificar a expressão
Corpo do loop pode executar 1 ou
mais vezes

28
Comandos repetitivos

comandos

condição comandos
true

false condição
true

false

while do/while

29
Comandos repetitivos – for

Controla os detalhes da repetição


Define inicialização, o “passo” e a
condição de parada.
Cada um dos elementos pode ser
uma expressão complexa

30
Comando repetitivos – for

for (expressão1; expressão2; expressão3)


{
trecho de código a ser repetido
}
expressão1 = inicialização
expressão2 = condição de parada
expressão3 = incremento/decremento
(passo)

31
Comando repetitivos – for

expressão1; //Inicialização

while (expressão2) //Condição de


parada
{
trecho de código a ser repetido
expressão3; // Passo do loop
}

32
Comandos repetitivos – break e continue
break
Termina um loop prematuramente
Ao ser executado continua o fluxo a partir
do comando seguinte ao loop
continue
Pula o resto da execução do corpo e inicia
a próxima iteração
Em um while/do-while: avalia a condição de
parada
Em um for: efetua a expressão de “passo” e
logo a seguir avalia a condição de parada
33
Exemplo Prático 3

34
Tratamento de Exceções

Tratamento de erros
Similar a C++ (também utilizado em
Java)
Permite tratar (ou conter) erros ocorridos
Programas mais tolerantes a falhas

35
Tratamento de Exceções

comando

erro? tratamento

comando

erro? tratamento

36
Tratamento de Exceções

Erro
comandos tratamento

Erro
comandos tratamento

37
Comando condicionais – fluxo normal
public int soma(int numero1, int numero 2)
{
int valorRetorno = 0;

valorRetorno = numero1+numero2; Fluxo normal

return valorRetorno;
}

38
Tratamento de Exceções – fluxo normal
Aplicação

Método 1

Método 2

Método 3

39
Tratamento de Exceções – exceção
Aplicação

Método 1

Método 2

Método 3

40
Tratamento de Exceções – exceção
Aplicação

Método 1

Método 2

Método 3

41
Tratamento de Exceções – exceção
Aplicação

Método 1

Método 2

Método 3

42
Tratamento de Exceções – exceção

43
Tratamento de Exceções

Exceções
Objetos que representam erros
Classe System.Exception
Pode existir uma “hierarquia” de erros
(via herança de classes)

44
Tratamento de Exceções - throw
Ao terminar a execução de um comando o
próximo é chamdo
Ao terminar um método o fluxo volta para o
próximo comando após a chamada deste
Ao invés de retornar pelo fluxo normal “lança”
um erro
Será tratado pelo catch do bloco try que protege
este comando
Se não houver um bloco try é lançada para o nivel
superior (até quebrar a aplicação se não houver
tratamento algum)

45
Tratamento de Exceções - throw

Sintaxe:

throw new Exception(“Em erro aconteceu aqui”);

throw variavelDaClasseException;

46
Comando condicionais –
try/catch/finally
try
{
BLOCO 1: bloco de código do fluxo normal da aplicação
}
catch (ClasseExcecao1 nome)
{
BLOCO 2: tratamento do erro representado por ClasseExcecao1
}
catch (ClasseExcecao2 nome)
{
BLOCO 3:tratamento do erro representado por ClasseExcecao2
}
finally
{
BLOCO FINAL:vai ser sempre executado (após o BLOCO 1, 2, 3 ou
4)
}
47
Tratamento de Exceções

Bloco try
Código que representa o fluxo normal da
aplicação (o que deve acontecer se não
houver um erro)
Blocos catch
Um bloco por tratamento de erro
diferente que pode ocorrer
Os blocos devem ser da exceção mais
específica (filha) para a mais genérica
(pai)
48
Tratamento de Exceções

Bloco finally
Bloco que é sempre executado, seja
após o fluxo normal ou o tratamento de
um erro
Em geral utilizado para liberar recursos
utilizados naquele bloco

49
Exemplo Prático 4

50
Arrays

Estrutura de dados
Conjunto de elementos do mesmo tipo
Seqüencial
 Estática – tamanho fixo após definida
Podem ser multidimensionais

51
Arrays

Criação - Sintaxe:
<tipo>[] nome {= new <tipo>[<tamanho>] } ;

Ex: int[] lista = new int[10];


ou
int[] lista;
...
lista = new int[10];

string[] medalhas = { "Ouro“, "Prata“, "Bronze“ };

52
Arrays
Acesso a um elemento - Sintaxe:
nome[<posição>]

Ex: int valorDesejado = lista[5];


lista[7] = x + y;

Obs: Os arrays começam da posição 0 (e


terminam na posição tamanho-1)

lista[0] .. lista[9]
lista[10] - IndexOutOfRangeException
53
Arrays multidimensionais - retangulares

Tamanhos iguais (ex:tabela)

Criação:

char[ , ] jogoDaVelha = new char[3,3];

Acesso:
jogoDaVelha[1,1] = ‘X’;

54
Arrays multidimensionais – jagged
tamanhos variáveis de acordo com a
“linha”
Criação:

int[][] arrayVariavel = new int[2][];


arrayVariavel[0] = new int[3];
arrayVariavel[1] = new int[] {1, 2, 3, 4 };

Acesso:
a = arrayVariavel[1][1];

55
Comando foreach

Comando repetitivo
Permite percorrer os elementos de
um conjunto seqüencialmente(Array
e outras estruturas que veremos
posteriormente)
Útil principalmente para percorrer
listas de objetos

56
Comando foreach
foreach (<tipo do elemento> <nome do
elemento> in <lista de elementos>)
{
}

Ex:

foreach (int numero in lista)


{
soma += numero;
}
57
Exemplo Prático 5

58

Você também pode gostar