Buscar

aula 3

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 80 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 80 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 80 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Desenvolvimento de Software 
Prof. Henrique Mota 
mota.henrique@gmail.com 
http://www.henriquemota.com.br 
ESTRUTURAS	
  DE	
  LINGUAGEM	
  
Introdução	
  
•  paradigma	
  OO:	
  conjunto	
  de	
  ideias,	
  conceitos	
  e	
  abstrações	
  
que	
  servem	
  como	
  um	
  guia	
  para	
  construir	
  um	
  so=ware.	
  
•  linguagem	
  de	
  programação:	
  define	
  formalmente	
  todas	
  as	
  
partes	
  de	
  um	
  sistema	
  e	
  como	
  essas	
  partes	
  se	
  relacionam.	
  
C#	
  (C	
  Sharp)	
  
•  �Linguagem	
  simples,	
  robusta,	
  orientada	
  a	
  objetos,	
  
fortemente	
  Epada	
  e	
  altamente	
  escalável;	
  
•  Permite	
  que	
  uma	
  mesma	
  aplicação	
  possa	
  ser	
  executada	
  
em	
  diversos	
  disposiEvos	
  de	
  hardware;	
  
•  Tudo	
  é	
  um	
  objeto:	
  	
  System.Object	
  é	
  a	
  classe	
  base	
  de	
  todo	
  
o	
  sistema	
  de	
  Epos	
  de	
  C#;	
  
•  Controle	
  de	
  versões:	
  cada	
  Código	
  Executável	
  gerado	
  tem	
  
informação	
  sobre	
  a	
  versão	
  do	
  código;	
  
•  Suporte	
  a	
  código	
  legado;	
  
C#	
  (C	
  Sharp)	
  
•  Linguagem	
  gerenciada:	
  todo	
  o	
  gerenciamento	
  de	
  
memória	
  é	
  feito	
  pelo	
  runEme	
  via	
  o	
  GC	
  (Garbage	
  
Collector);	
  
•  Flexível:	
  se	
  houver	
  necessidade	
  do	
  uso	
  de	
  ponteiros,	
  é	
  
permiEdo	
  ao	
  custo	
  de	
  desenvolver	
  código	
  não	
  gerenciado	
  -­‐	
  
”unsafe”;	
  
•  Sensível	
  ao	
  contexto:	
  “int”	
  é	
  diferente	
  de	
  "INT”;	
  
•  Blocos	
  de	
  código	
  são	
  agrupados	
  entre	
  chaves	
  {	
  };	
  
•  Cada	
  linha	
  de	
  código	
  é	
  separada	
  por	
  ponto-­‐e-­‐vírgula;	
  
•  Comentários	
  de	
  linhas	
  simples	
  começam	
  com	
  //.	
  
C#	
  (C	
  Sharp)	
  
•  Linguagem	
  de	
  Programação	
  muito	
  uElizada	
  no	
  mercado	
  de	
  
trabalho;	
  
•  Códigos	
  de	
  programas	
  escritos	
  em	
  C#	
  são	
  colocados	
  em	
  
arquivos	
  com	
  a	
  extensão	
  “.cs”;	
  
•  CSC	
  é	
  o	
  compilador	
  da	
  linguagem	
  C	
  Sharp.	
  
Método	
  Main	
  
•  método	
  especial,	
  ponto	
  de	
  entrada	
  do	
  programa;	
  
•  primeiro	
  método	
  a	
  ser	
  chamado	
  quando	
  o	
  programa	
  for	
  
executado;	
  
•  precisa	
  ser	
  sta$c	
  e	
  seu	
  Epo	
  de	
  retorno	
  pode	
  ser	
  void	
  ou	
  
int.	
  
•  também	
  pode	
  declarar	
  parâmetros	
  para	
  receber	
  os	
  
argumentos	
  passados	
  pela	
  linha	
  de	
  comando;	
  
•  deve	
  ser	
  inserido	
  em	
  uma	
  classe	
  C#.	
  	
  
Algumas variações do método Main 
Método	
  Main	
  
•  Os	
  parâmetros	
  do	
  método	
  Main	
  são	
  passados	
  pela	
  linha	
  
de	
  comando	
  e	
  podem	
  ser	
  manipulados	
  dentro	
  do	
  
programa.	
  	
  
•  O	
  exemplo	
  a	
  seguir	
  imprime	
  cada	
  parâmetro	
  recebido	
  em	
  
uma	
  linha	
  diferente.	
  	
  
A	
  Classe	
  “Console”	
  
Responsável	
  por	
  fornecer	
  os	
  métodos	
  de	
  leitura	
  e	
  escrita	
  
para	
  a	
  saída	
  padrão	
  do	
  console;	
  
•  ReadKey()	
  –	
  Leitura	
  de	
  um	
  caractere	
  simples;	
  
•  ReadLine()	
  –	
  Leitura	
  de	
  uma	
  linha	
  completa;	
  
•  Write()	
  –	
  Escreve	
  uma	
  string	
  sem	
  retorno	
  de	
  carro;	
  
•  WriteLine()	
  –	
  Escreve	
  uma	
  string	
  com	
  retorno	
  de	
  carro;	
  
A	
  Classe	
  “Console”	
  
Caractere	
  
de	
  Escape	
   Significado	
  
\n	
   Insere	
  uma	
  nova	
  linha	
  
\t	
   TAB	
  
\a	
   Dispara	
  o	
  som	
  de	
  um	
  alarme	
  sonoro	
  simples	
  
\b	
   Apaga	
  o	
  caractere	
  anterior	
  da	
  string	
  que	
  está	
  sendo	
  
escrita	
  no	
  console	
  (backspace)	
  
\r	
   Insere	
  um	
  retorno	
  de	
  carro	
  
\0	
   Caractere	
  NULL	
  (nulo)	
  
VARIÁVEIS	
  E	
  TIPOS	
  DE	
  DADOS	
  
Variáveis	
  e	
  Epos	
  de	
  dados	
  
•  variável:	
  recurso	
  fundamental	
  oferecido	
  pela	
  maioria	
  das	
  
Linguagens	
  de	
  Programação;	
  	
  
•  permite	
  armazenar	
  e	
  manipular	
  dados	
  na	
  memória	
  RAM;	
  
•  área	
  de	
  memória,	
  associada	
  a	
  um	
  nome,	
  que	
  pode	
  
armazenar	
  valores	
  de	
  um	
  determinado	
  Epo;	
  
•  Epo	
  de	
  dado	
  define	
  um	
  conjunto	
  de	
  valores	
  e	
  operações;	
  
•  uma	
  variável	
  de	
  um	
  certo	
  Epo	
  “T”	
  pode	
  conter,	
  em	
  um	
  
dado	
  instante,	
  um	
  valor	
  pertencente	
  ao	
  Epo	
  “T”.	
  	
  
Rigidez	
  de	
  Epos	
  
•  C#	
  é	
  uma	
  linguagem	
  com	
  rigidez	
  de	
  Epos	
  (em	
  inglês	
  
strongly	
  typed).	
  
	
  
“um	
  valor	
  pertencente	
  a	
  um	
  determinado	
  ;po	
  só	
  
pode	
  ser	
  usado	
  como	
  argumento	
  em	
  operações	
  que	
  
preveem	
  operações	
  desse	
  ;po.”	
  
Declaração	
  de	
  variáveis	
  
•  as	
  variáveis	
  devem	
  ser	
  declaradas	
  para	
  que	
  possam	
  ser	
  
uElizadas;	
  
•  declarar	
  uma	
  variável	
  envolve	
  definir	
  um	
  nome	
  único	
  e	
  um	
  
Epo	
  de	
  valor;	
  
•  variáveis	
  são	
  acessadas	
  pelos	
  nomes	
  e	
  armazenam	
  valores	
  
companveis	
  com	
  o	
  seu	
  Epo.	
  
Declaração	
  de	
  variáveis	
  
•  toda	
  variável	
  deve	
  ser	
  inicializada	
  antes	
  de	
  ser	
  uElizada;	
  	
  
•  se	
  não	
  inicializada	
  ocorrerá	
  um	
  erro	
  de	
  compilação;	
  
•  a	
  inicialização	
  é	
  realizada	
  através	
  do	
  operador	
  de	
  
atribuição	
  “=”	
  e	
  o	
  valor	
  guardado	
  no	
  espaço	
  de	
  memória	
  
reservado	
  a	
  ela.	
  
Declaração	
  de	
  variáveis	
  
•  a	
  declaração	
  pode	
  ser	
  feita	
  em	
  qualquer	
  linha	
  de	
  um	
  
bloco,	
  não	
  é	
  necessário	
  declarar	
  todas	
  no	
  começo	
  do	
  
bloco.	
  
Uma declaração da forma 
 int x = 10; 
é na verdade a combinação de uma 
declaração de variável com uma 
atribuição. 
Escopo	
  da	
  variável	
  
•  Toda	
  variável	
  pode	
  ser	
  uElizada	
  dentro	
  do	
  bloco	
  no	
  qual	
  
ela	
  foi	
  declarada	
  após	
  a	
  linha	
  da	
  sua	
  inicialização.	
  
•  Não	
  é	
  permiEdo	
  declarar	
  duas	
  variáveis	
  com	
  o	
  mesmo	
  
nome	
  dentro	
  de	
  um	
  mesmo	
  bloco.	
  Isso	
  ocasionará	
  um	
  erro	
  
de	
  compilação.	
  
Escopo	
  da	
  variável	
  
•  Dentro	
  de	
  um	
  bloco	
  é	
  possível	
  abrir	
  um	
  sub-­‐bloco.	
  As	
  
variáveis	
  declaradas	
  antes	
  do	
  sub-­‐bloco	
  podem	
  ser	
  
acessadas	
  também	
  no	
  sub-­‐bloco.	
  
Sub-bloco definido e acessando 
valores da varável “numero” 
Escopo	
  da	
  variável	
  
•  Porém,	
  variáveis	
  declaradas	
  em	
  sub-­‐blocos	
  não	
  podem	
  ser	
  
acessadas	
  do	
  “bloco	
  pai”	
  nem	
  de	
  outro	
  sub-­‐bloco	
  do	
  
“bloco	
  pai”.	
  
Escopo	
  da	
  variável	
  
•  Dentro	
  de	
  sub-­‐blocos	
  diferentes	
  de	
  um	
  mesmo	
  bloco	
  é	
  
permiEdo	
  declarar	
  variáveis	
  com	
  nomesiguais.	
  
TIPOS	
  DE	
  DADOS	
  
Tipos	
  de	
  dados	
  
•  Como	
  toda	
  linguagem	
  de	
  programação,	
  C#	
  apresenta	
  seu	
  
grupo	
  de	
  Epos	
  de	
  dados	
  básico.	
  
•  Esses	
  Epos	
  são	
  conhecidos	
  como	
  “primiEvos”	
  ou	
  
“fundamentais”	
  por	
  serem	
  suportados	
  diretamente	
  pelo	
  
compilador.	
  
•  São	
  uElizados	
  durante	
  a	
  codificação	
  na	
  definição	
  de	
  
variáveis,	
  parâmetros	
  e	
  até	
  mesmo	
  em	
  comparações.	
  
Sistema	
  de	
  Tipos	
  do	
  C#	
  
Object 
String 
Array T[] 
enum T 
ValueType 
class T 
int 
short 
byte 
char 
float 
decimal 
long 
uint 
ulong 
sbyte 
ushort 
bool 
double 
Enum 
struct T 
Tipo	
  inteiro	
  
C#	
  oferece	
  diversos	
  Epos	
  de	
  inteiros.	
  Cada	
  um	
  deles	
  é	
  
definido	
  por:	
  
–  uma	
  gama	
  de	
  valores	
  
–  uma	
  representação	
  interna	
  
O	
  desenvolvedor	
  tem	
  a	
  opção	
  de	
  decidir	
  qual	
  o	
  Epo	
  será	
  
usado	
  em	
  função	
  da	
  necessidade	
  de	
  sua	
  aplicação.	
  
Tipo	
  booleano	
  
•  O	
  Epo	
  booleano,	
  em	
  C#	
  chamado	
  de	
  bool,	
  é	
  usado	
  em	
  
geral	
  para	
  operações	
  lógicas.	
  
•  Os	
  valores	
  possíveis	
  para	
  uma	
  variável	
  desse	
  Epo	
  são	
  true	
  
e	
  false.	
  
Categorias	
  de	
  Epos	
  de	
  dados	
  
Em	
  C#,	
  podemos	
  apresentar	
  02	
  categorias:	
  
	
  
•  Tipos	
  valor:	
  armazenam	
  dados	
  em	
  memória	
  
enquanto.	
  	
  
Ex.:	
  int	
  x	
  =10;	
  
•  Tipos	
  referência:	
  armazenam	
  uma	
  referência,	
  o	
  
endereço,	
  para	
  o	
  valor	
  atual.	
  	
  
Ex.:	
  int	
  x	
  =	
  new	
  int(10);	
  
	
  
Conversão	
  de	
  Epo	
  
Conversões	
  de	
  Epos	
  de	
  dados	
  é	
  uma	
  situação	
  comum	
  em	
  
programação.	
  Devemos	
  considerar:	
  
•  Os	
  Epos	
  de	
  menor	
  faixa	
  são	
  converEdos	
  para	
  os	
  de	
  maior	
  
faixa.	
  Por	
  exemplo,	
  o	
  Epo	
  int	
  pode	
  ser	
  converEdo	
  para:	
  
long,	
  float,	
  double	
  ou	
  decimal.	
  
•  A	
  conversão	
  dos	
  Epos	
  de	
  ponto	
  flutuante	
  (float,	
  double)	
  
para	
  decimal	
  causa	
  erro.	
  
•  A	
  conversão	
  entre	
  os	
  Epos	
  com	
  sinal	
  e	
  sem	
  sinal	
  de	
  valores	
  
inteiros	
  com	
  o	
  mesmo	
  tamanho	
  causa	
  erro.	
  Por	
  exemplo,	
  
entre	
  o	
  Epo	
  int	
  e	
  unit.	
  
Tabela	
  de	
  conversão	
  automáEca	
  
O	
  objeto	
  “Convert”	
  
•  Em	
  C#	
  temos	
  o	
  objeto	
  Convert	
  que	
  é́	
  usado	
  para	
  converter	
  
um	
  Epo	
  de	
  dado	
  em	
  outro.	
  
•  Os	
  Epos	
  de	
  dados	
  suportados	
  são:	
  Boolean,	
  Char,	
  SByte,	
  
Byte,	
  Int16,	
  Int32,	
  Int64,	
  Uint16,	
  UInt32,	
  UInt64,	
  Single,	
  
Double,	
  Decimal,	
  DateTime	
  e	
  String.	
  
	
  
Int	
  numero	
  =	
  System.Convert.ToInt32	
  (decimal);	
  
	
  
OPERADORES	
  
Operadores	
  
•  Para	
  manipular	
  os	
  valores	
  das	
  variáveis,	
  podemos	
  aplicar	
  
os	
  operadores	
  da	
  linguagem.	
  Há	
  diversos	
  Epos	
  de	
  
operadores.	
  	
  
AritméEcos	
  
Para	
  realizar	
  as	
  operações	
  matemáEcas	
  podemos	
  aplicar	
  os	
  
operadores:	
  	
  
•  +	
  (soma),	
  	
  
•  -­‐	
  (subtração),	
  	
  
•  *	
  (mulEplicação),	
  	
  
•  /	
  (divisão)	
  e	
  	
  
•  %	
  (módulo).	
  
Igualdade	
  e	
  desigualdade	
  
Para	
  verificar	
  se	
  o	
  valor	
  armazenado	
  em	
  uma	
  variável	
  é	
  igual	
  
ou	
  diferente	
  a	
  um	
  determinado	
  valor	
  ou	
  ao	
  valor	
  de	
  outra	
  
variável,	
  devem	
  ser	
  uElizados	
  os	
  operadores:	
  
•  ==	
  (igual)	
  e	
  	
  
•  !=	
  (diferente).	
  
Esses	
  operadores	
  devolvem	
  valores	
  do	
  Epo	
  bool	
  (true	
  ou	
  
false).	
  
	
  
Relacionais	
  
As	
  variáveis	
  numéricas	
  podem	
  ser	
  comparadas	
  com	
  o	
  intuito	
  
de	
  descobrir	
  a	
  ordem	
  ou	
  a	
  relação	
  numérica	
  dos	
  seus	
  
valores.	
  Os	
  operadores	
  relacionais	
  são:	
  
•  >	
  (maior	
  que),	
  
•  <	
  (menor	
  que),	
  	
  
•  >=	
  (maior	
  ou	
  igual	
  a)	
  e	
  	
  
•  <=	
  (menor	
  ou	
  igual	
  a).	
  	
  
Esses	
  operadores	
  devolvem	
  valores	
  do	
  Epo	
  bool	
  (true	
  ou	
  
false).	
  
	
  
Relacionais	
  
Lógicos	
  
Para	
  verificar	
  várias	
  condições	
  é	
  possível	
  aplicar	
  os	
  
operadores	
  lógicos:	
  	
  
•  &&	
  (e)	
  e	
  	
  
•  ||	
  (ou).	
  
Expressões	
  
•  Uma	
  expressão	
  é	
  uma	
  combinação	
  de	
  operandos	
  e	
  
operadores.	
  
•  Expressões	
  em	
  C#	
  são	
  semelhantes	
  às	
  expressões	
  usadas	
  
em	
  outras	
  linguagens	
  como	
  C	
  ou	
  Pascal.	
  
Expressões	
  
•  No	
  caso	
  de	
  operações	
  encadeadas,	
  como	
  em	
  a+b*c	
  o	
  
cálculo	
  da	
  expressão	
  é	
  feito	
  de	
  acordo	
  com	
  a	
  precedência	
  
entre	
  os	
  operadores.	
  
•  Parênteses	
  podem	
  ser	
  uElizados	
  para	
  alterar	
  a	
  ordem	
  de	
  
cálculo	
  das	
  operações.	
  
•  Exemplos:	
  
(a+b)*c e	
  a+(b*c) 
Expressões	
  
No	
  caso	
  de	
  encadeamento	
  de	
  operações	
  com	
  a	
  mesma	
  precedência,	
  a	
  
linguagem	
  define	
  o	
  modo	
  de	
  associaEvidade	
  (à	
  esquerda	
  ou	
  à	
  direita).	
  	
  
	
  
Os	
  operadores	
  aritméEcos	
  em	
  C#	
  têm	
  associaEvidade	
  à	
  esquerda.	
  
	
  
Exemplo:	
  
	
  6/2/3	
  é	
  calculado	
  como	
  (6/2)/3	
  pois	
  neste	
  caso	
  a	
  associaEvidade	
  
é	
  à	
  esquerda.	
  
	
  
Em	
  C#,	
  apenas	
  os	
  operadores	
  de	
  atribuição	
  (=	
  *=	
  /=	
  %=	
  +=	
  -­‐=	
  <<=	
  >>=	
  
&=	
  ^=	
  |=)	
  e	
  o	
  operador	
  ternário	
  (?	
  :),	
  têm	
  associaEvidade	
  à	
  direita.	
  	
  
Operadores	
  
Principais	
  operadores,	
  em	
  ordem	
  decrescente	
  de	
  
precedência	
  
Categoria Operadores Associatividade 
Unário + - ! esquerda 
Multiplicativo * / % esquerda 
Aditivo + - esquerda 
Relacional < = > >= <= == is esquerda 
Igualdade == != esquerda 
'and' (bool) && esquerda 
'ou' (bool) || esquerda 
Operadores	
  combinados	
  
O	
  operador	
  de	
  atribuição	
  pode	
  ser	
  combinado	
  com	
  outros	
  
operadores	
  aritméEcos.	
  
	
  a op= exp;	
  é	
  equivalente	
  a	
  	
  a = a op (exp); 
Exemplos:	
  
	
  a += b;	
  equivalente	
  a	
  a = a + b; 
	
  a -= 2;	
  equivalente	
  a	
  a = a - 2; 
	
  a *= 1+1;	
  equivalente	
  a	
  a = a * (1+1); 
	
  a %= b*c+d;	
  equivalente	
  a	
  a = a % (b*c+d); 
 
Auto-­‐incremento	
  e	
  auto-­‐decremento	
  
Numa	
  expressão,	
  os	
  operadores	
  ++	
  e	
  --	
  podem	
  ser	
  usados	
  
antes	
  ou	
  depois	
  da	
  variável:	
  
	
  
–  se	
  usado	
  após	
  a	
  variável,	
  o	
  incremento	
  será	
  feito	
  depois	
  de	
  usar	
  o	
  
valor	
  da	
  variável	
  na	
  expressão–  se	
  usado	
  antes	
  da	
  variável,	
  o	
  incremento	
  será	
  feito	
  antes	
  do	
  uso	
  
do	
  valor	
  na	
  expressão	
  
	
  
Exemplos:	
  
	
  
	
  a = a/i++;	
  equivalente	
  a	
  a = a/i; i = i+1; 
	
  b = --k*2;	
  equivalente	
  a	
  k=k-1; b = k*2; 
COMANDOS	
  
Seleção	
  
•  Os	
  comandos	
  de	
  seleção	
  são	
  uElizados	
  na	
  escolha	
  de	
  uma	
  
possibilidade	
  entre	
  uma	
  ou	
  mais	
  possíveis.	
  
•  Os	
  comandos	
  if	
  e	
  switch	
  fazem	
  parte	
  deste	
  grupo.	
  
Comando	
  if	
  
•  O	
  comando	
  if	
  uEliza	
  uma	
  expressão,	
  ou	
  expressões,	
  
booleana	
  para	
  executar	
  um	
  comando	
  ou	
  um	
  bloco	
  de	
  
comandos.	
  	
  
•  A	
  cláusula	
  else	
  é	
  opcional	
  na	
  uElização	
  do	
  if,	
  no	
  entanto,	
  
seu	
  uso	
  é	
  comum	
  em	
  decisões	
  com	
  duas	
  ou	
  mais	
  opções.	
  
Comando	
  if	
  
Situação 01 (sem o uso do else) 
Situação 02 (com o uso do else) 
Comando	
  if	
  
•  Toda	
  expressão	
  do	
  comando	
  if	
  deve	
  ser	
  embuEda	
  em	
  
parênteses	
  ()	
  e	
  possui	
  o	
  conceito	
  de	
  curto-­‐circuito	
  (short-­‐
circuit).	
  	
  
•  Isto	
  quer	
  dizer	
  que	
  se	
  uma	
  expressão	
  composta	
  por	
  And	
  
(&&),	
  fornecer	
  na	
  sua	
  primeira	
  análise	
  um	
  valor	
  booleano	
  
false	
  (falso),	
  as	
  restantes	
  não	
  serão	
  analisadas.	
  	
  
•  Este	
  conceito	
  é	
  válido	
  para	
  todas	
  expressões	
  booleanas.	
  
Comando	
  if	
  
Assim	
  como	
  outros	
  comandos.	
  O	
  if	
  também	
  pode	
  ser	
  
encontrado	
  na	
  forma	
  aninhada.	
  
Comando	
  if	
  
O	
  comando	
  if	
  com	
  a	
  cláusula	
  else	
  única	
  pode	
  ser	
  encontrado	
  
em	
  sua	
  forma	
  reduzida	
  com	
  operador	
  ternário	
  representado	
  
por	
  interrogação	
  (?:).	
  
E	
  chamado	
  de	
  operador	
  ternário	
  por	
  possuir	
  3	
  expressões:	
  a	
  
primeira	
  refere-­‐se	
  a	
  condição	
  boolena,	
  a	
  segunda	
  se	
  a	
  
condição	
  é	
  verdadeira	
  e	
  a	
  terceira	
  se	
  a	
  condição	
  é	
  falsa.	
  
	
  
Comando	
  swicth	
  
•  O	
  comando	
  switch	
  uEliza	
  o	
  valor	
  de	
  uma	
  determina	
  
expressão	
  contra	
  uma	
  lista	
  de	
  valores	
  constantes	
  para	
  
execução	
  de	
  um	
  ou	
  mais	
  comandos.	
  
•  Os	
  valor	
  constante	
  é	
  tratado	
  através	
  da	
  cláusula	
  case	
  e	
  
este	
  pode	
  ser	
  numérico,	
  caracter	
  ou	
  string.	
  
•  A	
  cláusula	
  default	
  é	
  uElizada	
  para	
  qualquer	
  caso	
  não	
  
interceptado	
  pelo	
  case.	
  
Comando	
  switch	
  
Comando	
  switch	
  
Uma	
  ou	
  mais	
  cláusulas	
  case	
  podem	
  ser	
  encontradas	
  
seguidamente	
  quando	
  mais	
  do	
  que	
  	
  uma	
  opção	
  é	
  permiEda	
  
para	
  um	
  comando	
  ou	
  bloco	
  de	
  comandos.	
  
Comando	
  switch	
  
A	
  cláusula	
  break	
  é	
  uElizada	
  para	
  separar	
  os	
  blocos	
  do	
  switch	
  
e	
  garante	
  que	
  o	
  bloco	
  seja	
  executado	
  somente	
  até	
  
determinado	
  ponto.	
  
	
  
Interação	
  e	
  Loop	
  
•  Conhecidos	
  como	
  laço	
  ou	
  loop,	
  os	
  comandos	
  de	
  iteração	
  
executam	
  repeEdamente	
  um	
  comando	
  ou	
  bloco	
  de	
  
comandos,	
  a	
  parEr	
  de	
  uma	
  determinada	
  condição.	
  	
  
•  Esta	
  condição	
  pode	
  ser	
  pré-­‐definida	
  ou	
  com	
  final	
  em	
  
aberto.	
  	
  
•  Em	
  C#,	
  fazem	
  parte	
  dos	
  comandos	
  de	
  iteração:	
  while,	
  do,	
  
for	
  e	
  foreach.	
  
Comando	
  for	
  
•  O	
  comando	
  for	
  possui	
  3	
  declarações	
  opcionais,	
  separadas	
  
por	
  ponto	
  e	
  vírgula(;),	
  dentro	
  dos	
  parênteses:	
  	
  
•  inicialização,	
  	
  
•  condição	
  de	
  interação,	
  
•  e	
  a	
  iteração.	
  	
  
•  Em	
  cada	
  parâmetro,	
  mais	
  de	
  uma	
  expressão	
  pode	
  ser	
  
encontrada	
  separada	
  por	
  vírgula.	
  
Comando	
  for	
  
Comando	
  foreach	
  
•  O	
  comando	
  foreach	
  enumera	
  os	
  elementos	
  de	
  uma	
  
coleção.	
  
Comando	
  do	
  e	
  while	
  
•  Os	
  comandos	
  do	
  e	
  while	
  tem	
  caracterísEcas	
  semelhantes.	
  
Ambos	
  executam	
  condicionalmente	
  um	
  comando	
  ou	
  bloco	
  
de	
  comandos.	
  	
  
•  No	
  entanto,	
  o	
  comando	
  do	
  pode	
  ser	
  executado	
  uma	
  ou	
  
mais	
  vezes	
  e	
  o	
  comando	
  while	
  pode	
  ser	
  executado	
  
nenhuma	
  ou	
  mais	
  vezes,	
  isto	
  ocorre	
  porque	
  a	
  expressão	
  
condicional	
  do	
  comando	
  do	
  é́	
  encontrada	
  no	
  final	
  do	
  
bloco.	
  
Comando	
  do	
  e	
  while	
  
VETORES	
  E	
  MATRIZES	
  
Vetores	
  e	
  matrizes	
  
•  C#	
  oferece	
  diversos	
  mecanismos	
  para	
  a	
  
criação	
  de	
  novos	
  Epos	
  de	
  dados	
  a	
  parEr	
  de	
  
Epos	
  já	
  existentes.	
  	
  
•  Um	
  desses	
  mecanismos	
  é	
  o	
  que	
  permite	
  a	
  
construção	
  de	
  vetores	
  e	
  matrizes.	
  
•  Suponha	
  que	
  o	
  sistema	
  de	
  uma	
  loja	
  virtual	
  
precisa	
  armazenar	
  os	
  preços	
  dos	
  produtos	
  
que	
  ela	
  comercializa.	
  	
  
Vetores	
  e	
  matrizes	
  
•  Não	
  seria	
  nada	
  práEco	
  declarar	
  para	
  cada	
  produto	
  uma	
  
variável	
  que	
  armazena	
  o	
  preço	
  do	
  mesmo.	
  	
  
•  Para	
  isso,	
  é	
  possível	
  uElizar	
  as	
  estruturas	
  chamadas	
  Arrays	
  
(vetores).	
  
•  Um	
  array	
  é	
  uma	
  estrutura	
  que	
  armazena	
  um	
  ou	
  mais	
  
valores	
  de	
  um	
  determinado	
  Epo.	
  	
  
Vetores	
  e	
  matrizes	
  
•  A	
  variável	
  preços	
  armazena	
  uma	
  referência	
  de	
  um	
  array	
  
criado	
  na	
  memória	
  RAM	
  do	
  computador.	
  	
  
•  Na	
  memória,	
  o	
  espaço	
  ocupado	
  por	
  esse	
  array	
  está	
  
dividido	
  em	
  100	
  “pedaços”	
  iguais	
  numerados	
  de	
  0	
  até	
  99.	
  	
  
•  Cada	
  “pedaço”	
  pode	
  armazenar	
  um	
  valor	
  do	
  Epo	
  double.	
  
•  Quando	
  um	
  array	
  é	
  criado,	
  as	
  posições	
  dele	
  são	
  
inicializadas	
  com	
  os	
  valores	
  default.	
  
Vetores	
  e	
  matrizes	
  
Acessar posições fora do intervalo de índices de um array gera um 
erro de execução. No momento da criação de um array, os seus 
valores podem ser definidos. 
Declaração	
  de	
  um	
  vetor	
  
Um	
  exemplo:	
  
int[] v = new int[10]; 
 
–  v	
  é	
  declarado	
  com	
  um	
  vetor	
  de	
  inteiros	
  
–  a	
  expressão	
  new int[10] cria	
  efeEvamente	
  um	
  vetor	
  de	
  
inteiros,	
  de	
  tamanho	
  10.	
  
–  o	
  comando	
  de	
  atribuição	
  associa	
  o	
  vetor	
  criado	
  ao	
  vetor	
  v.	
  
Declaração	
  de	
  um	
  vetor	
  
•  Tendo	
  declarado	
  a	
  variável	
  	
  int[] v,	
  esta	
  pode	
  ser	
  
associada	
  a	
  qualquer	
  vetor	
  de	
  inteiros.	
  Um	
  exemplo:	
  
 ... 
 int[] v10 = new int[10]; 
 int[]v20 = new int[20]; 
 int i = x+10/16; 
 int[] v; 
 ... 
 switch(i) { 
 case 10: v = v10; break; 
 case 20: v = v20; break; 
 default: v = new int[i]; break; 
 } 
 ... 
Lista	
  de	
  valores	
  
•  Um	
  vetor	
  também	
  ser	
  pode	
  ser	
  criado	
  	
  a	
  parEr	
  de	
  uma	
  lista	
  
de	
  valores	
  entre	
  {	
  e	
  }	
  e	
  separados	
  por	
  vírgula.	
  	
  
•  Exemplos:	
  
	
  
int[] primos = { 2,3,5,7,11,13,17,19 }; 
char[] dd = { 'd','s','t','q','q','s','s'}; 
string[] meses = {"jan","fev","mar","abr" }; 
Acesso	
  aos	
  elementos	
  
•  Tendo	
  criado	
  um	
  vetor,	
  o	
  acesso	
  aos	
  seus	
  elementos	
  é	
  
feito	
  a	
  parEr	
  da	
  sua	
  posição,	
  ou	
  índice,	
  no	
  vetor.	
  
•  Se	
  um	
  vetor	
  tem	
  N	
  elementos,	
  os	
  índices	
  dos	
  seus	
  
elementos	
  vão	
  variar	
  entre	
  0	
  e	
  N-­‐1.	
  
•  O	
  índice	
  para	
  acesso	
  ao	
  elementos	
  deve	
  ser	
  um	
  valor	
  
inteiro	
  entre	
  0	
  e	
  N-­‐1,	
  definido	
  por	
  uma	
  expressão.	
  
Um	
  exemplo	
  
... 
int[] f = new int[10]; 
f[0] = 0; f[1] = 1; 
for( int i = 2; i < 10; i++ ) 
 f[i] = f[i-1]+f[i-2]; 
... 
Outro	
  exemplo	
  
public static void Main(string[] args){ 
 int[] primos = { 2,3,5,7,11,13,17,19,23,29,31 }; 
 int[] somas = new int[11]; 
 for(int i = 0; i < 11; i++){ 
 somas[i] = 0; 
 for(int j = 0; j <= i; j++) 
 somas[i] += primos[j]; 
 } 
 Console.Write("somas:",somas); 
 for(int i = 0; i < 11; i++) 
 Console.Write(" {0}",somas[i]); 
 Console.WriteLine(); 
} 
Valor	
  inicial	
  de	
  um	
  vetor	
  
•  O	
  valor	
  inicial	
  de	
  um	
  vetor	
  pode	
  ser	
  definido	
  
através	
  de	
  uma	
  tupla	
  da	
  forma	
  
{ valor, valor, ... , valor } 
•  O	
  número	
  de	
  valores	
  na	
  tupla	
  e	
  o	
  seu	
  Epo	
  devem	
  
ser	
  companveis	
  com	
  o	
  vetor.	
  
Um	
  exemplo	
  
... 
int[] p = { 2,3,5,7,11, 13 }; 
int[] s = { p[0]+p[1], 
p[2]+p[3],p[4]+p[5] }; 
string[] dias = { 
 "seg","ter","qua","qui", 
 "sex","sab","dom“ 
 }; 
... 
Arrays	
  mulEdimensionais	
  
•  É	
  possível	
  criar	
  arrays	
  de	
  várias	
  dimensões.	
  
•  Isso	
  permite	
  a	
  criação	
  de	
  estruturas	
  para	
  armazenar	
  os	
  
valores	
  de	
  uma	
  tabela.	
  
Percorrendo	
  arrays	
  
•  Os	
  arrays	
  podem	
  ser	
  facilmente	
  preenchidos	
  uElizando	
  o	
  
comando	
  while	
  ou	
  o	
  for.	
  
Percorrendo	
  arrays	
  
•  A	
  quanEdade	
  de	
  elementos	
  em	
  cada	
  dimensão	
  dos	
  arrays	
  
pode	
  ser	
  obEda	
  através	
  do	
  método	
  getLength.	
  	
  
•  A	
  quanEdade	
  de	
  elementos	
  em	
  todas	
  as	
  dimensões	
  pode	
  
ser	
  obEda	
  através	
  da	
  propriedade	
  Length.	
  
Propriedades	
  e	
  Métodos	
  
•  obj.Length	
  →	
  Tamanho	
  do	
  vetor	
  
•  Array.IndexOf(Array	
  vetor,	
  object	
  value)	
  →	
  Procura	
  a	
  
primeira	
  ocorrência	
  de	
  valor	
  em	
  um	
  vetor	
  
•  Array.LastIndexOf(Array	
  vetor,	
  object	
  value)	
  →	
  Procura	
  a	
  
úlEma	
  ocorrência	
  de	
  valor	
  em	
  um	
  vetor	
  
•  Array.Sort(Array	
  vetor)	
  →	
  Ordena	
  o	
  vetor	
  crescentemente	
  
•  Array.Reverse(Array	
  vetor)	
  →	
  Ordena	
  o	
  vetor	
  
decrescentemente	
  
Tamanho	
  de	
  um	
  vetor	
  
 
 ... 
 for(int m = 0; m < dias_mes.Length; m++){ 
 gastos[m] = new float[dias_mes[m]]; 
 for(int d = 0; d < gastos[m].Length; d++) 
 gastos[m][d] = 0.0F; 
 } 
 ... 
Recomendações	
  da	
  MS	
  
•  Evite	
  usar	
  “_”	
  (underline)	
  
•  Não	
  crie	
  variáveis	
  com	
  o	
  mesmo	
  nome	
  alterando	
  somente	
  
entre	
  maiúsculas	
  e	
  minúsculas	
  
•  UElize	
  nome	
  de	
  varáveis	
  com	
  minúsculas	
  
•  Evite	
  uElizar	
  todas	
  as	
  letras	
  maiúsculas	
  (normalmente	
  
uElizado	
  para	
  definir	
  constantes)	
  
•  UElize	
  notação	
  camelCasing	
  
•  Em	
  classes,	
  métodos,	
  propriedades,	
  enumeradores,	
  
interfaces,	
  constantes,	
  campos	
  somente	
  leitura	
  e	
  
namespaces	
  use	
  notação	
  PascalCasing

Outros materiais