A maior rede de estudos do Brasil

Grátis
64 pág.
Apostila CSharp

Pré-visualização | Página 5 de 14

" V e r d a d e i r o " );
5 }
6 //if com uma u´nica possibilidade. Exibe a string "Verdadeiro" no Console caso a
7 // express~ao (a==true) seja verdadeira , sen~ao exibe a string "Falso"
8 if(a==true){
9 System.Console.Write( " V e r d a d e i r o " );
10 }
11 else{
12 System.Console.Write( " F a l s o " );
13 }
Toda expressa˜o do comando if deve ser embutida em pareˆnteses (()) e possui o conceito de
curto-circuito (short-circuit). Isto quer dizer que se uma expressa˜o composta por And (&&),
fornecer na sua primeira ana´lise um valor booleano false (falso), as restantes na˜o sera˜o analisadas.
Este conceito e´ va´lido para todas expresso˜es booleanas.
Por exemplo:
Co´digo 11: Ifs com And e Or
1 //&& (And). Somente a primeira func¸~ao e´ executada
2 if(MyFunc () && MyFunc2 ());
3
4 //|| (Or). Ambas func¸~oes s~ao executadas
5 if(MyFunc () || MyFunc2 ());
6
7 public static bool MyFunc (){ return false; }
8
9 public static bool MyFunc2 (){ return true; }
Apostila C# 19
Apostila C#
Diogo Cezar Teixera Batista
20 de novembro de 2008
20
Assim como outros comandos. O if tambe´m pode ser encontrado na forma aninhada.
Co´digo 12: Ifs aninhados
1 if(x==1){
2 if(y==100){
3 if(z==1000){
4 System.Console.Write( " O K " );
5 }
6 }
7 }
Pore´m, devido a caracter´ıstica de curto-circuito nas expresso˜es, as linhas de cima podem e
devem ser reescritas para:
Co´digo 13: Curto-circuito
1 if(x==1 && y==100 && z==1000) System.Console.Write( " O K " );
O comando if tambe´m pode ser encontrado num formato escada if-else-if , quando
existem mais do que duas possibilidades. Pore´m, na maioria destes casos, se as expresso˜es na˜o
forem compostas ou utilizarem de func¸o˜es, a cla´usula switch substitui este tipo de construc¸a˜o.
Co´digo 14: Exemplo if-else-if
1 using System;
2 class Ifs{
3 public static void Main(){
4 char chOpt;
5 Console.WriteLine( " 1 - I n s e r i r " );
6 Console.WriteLine( " 2 - A t u a l i z a r " );
7 Console.WriteLine( " 3 - A p a g a r " );
8 Console.WriteLine( " 4 - P r o c u r a r " );
9 Console.Write( " E s c o l h a e n t r e [ 1 ] a [ 4 ] : " );
10 // Verifica se os valores entrados esta entre 1 e 4
11 //caso contra´rio pede reentrada
12 do{
13 chOpt = (char)Console.Read();
14 }while(chOpt < ’ 1 ’ || chOpt > ’ 4 ’);
15 if(chOpt== ’ 1 ’){
Apostila C# 20
Apostila C#
Diogo Cezar Teixera Batista
20 de novembro de 2008
21
16 Console.WriteLine( " I n s e r i r . . . " );
17 // InsertFunction ();
18 }
19 else if(chOpt== ’ 2 ’){
20 Console.WriteLine( " A t u a l i z a r . . . " );
21 // UpdateFunction ();
22 }
23 else if(chOpt== ’ 3 ’){
24 Console.WriteLine( " A p a g a r . . . " );
25 // DeleteFunction ();
26 }
27 else{
28 Console.WriteLine( " P r o c u r a r . . . " );
29 // FindFunction ();
30 }
31 }
O comando if com a cla´usula else u´nica pode ser encontrado em sua forma reduzida com
operador terna´rio representado por interrogac¸a˜o (?:). E´ chamado de operador terna´rio por pos-
suir 3 expresso˜es: a primeira refere-se a condic¸a˜o boolena, a segunda se a condic¸a˜o e´ verdadeira
e a terceira se a condic¸a˜o e´ falsa.
Co´digo 15: Operador Terna´rio
1 int x;
2 if(f==true)
3 x = 100;
4 else
5 x = 1000;
6
7 // As linhas acima podem ser substituı´das por:
8
9 int x = f==true ?100:1000;
6.1.2 Comando switch
O comando switch utiliza o valor de uma determina expressa˜o contra uma lista de valores
constantes para execuc¸a˜o de um ou mais comandos. Os valor constante e´ tratado atrave´s da
cla´usula case e este pode ser nu´merico, caracter ou string. A cla´usula default e´ utilizada para
Apostila C# 21
Apostila C#
Diogo Cezar Teixera Batista
20 de novembro de 2008
22
qualquer caso na˜o interceptado pelo case. O exemplo abaixo implementa a versa˜o com o comando
switch do exemplo, previamente mostrado com o comando if :
Co´digo 16: Comando switch
1 using System;
2 class Switchs{
3 public static void Main(){
4 char chOpt;
5 Console.WriteLine( " 1 - I n s e r i r " );
6 Console.WriteLine( " 2 - A t u a l i z a r " );
7 Console.WriteLine( " 3 - A p a g a r " );
8 Console.WriteLine( " 4 - P r o c u r a r " );
9 Console.Write( " E s c o l h a e n t r e [ 1 ] a [ 4 ] : " );
10 // Verifica se os valores entrados esta entre 1 e 4
11 //caso contra´rio pede reentrada
12 do{
13 chOpt = (char)Console.Read();
14 }while(chOpt < ’ 1 ’ || chOpt > ’ 4 ’);
15 switch(chOpt){
16 case ’ 1 ’:
17 Console.WriteLine( " I n s e r i r . . . " );
18 // InsertFunction ();
19 break;
20 case ’ 2 ’:
21 Console.WriteLine( " A t u a l i z a r . . . " );
22 // UpdateFunction ();
23 break;
24 case ’ 3 ’:
25 Console.WriteLine( " A p a g a r . . . " );
26 // DeleteFunction ();
27 break;
28 default:
29 Console.WriteLine( " P r o c u r a r . . . " );
30 // FindFunction ();
31 }
32 }
Uma ou mais cla´usulas case podem ser encontradas seguidamente quando mais do que uma
opc¸a˜o e´ permitida para um comando ou bloco de comandos. O exemplo abaixo apresenta essa
Apostila C# 22
Apostila C#
Diogo Cezar Teixera Batista
20 de novembro de 2008
23
condic¸a˜o:
Co´digo 17: Comando switch
1 switch(sProduct){
2 case " W i n d o w s 2 0 0 0 " :
3 case " W i n d o w s N T " :
4 System.Console.Write( " S i s t e m a O p e r a c i o n a l " );
5 break;
6 case " M S D E " :
7 System.Console.Write( " M e c a n i s m o S i m p l i f i c a d o " );
8 goto case " S Q L S e r v e r " ;
9 case " S Q L S e r v e r " :
10 System.Console.Write( " B a n c o d e D a d o s " );
11 }
A cla´usula break , e´ utilizada para separar os blocos do switch e garante que o bloco seja
executado somente ate´ determinado ponto.
6.2 Iterac¸a˜o ou Loop
Conhecidos como lac¸o ou loop, os comandos de iterac¸a˜o executam repetidamente um co-
mando ou bloco de comandos, a partir de uma determinada condic¸a˜o. Esta condic¸a˜o pode ser
pre´-definida ou com final em aberto. Em C#, fazem parte dos comandos de iterac¸a˜o: while ,
do , for e foreach .
6.2.1 Comando for
O comando for possui 3 declarac¸o˜es opcionais, separadas por ponto e v´ırgula (;), dentro dos
pareˆnteses: inicializac¸a˜o, condic¸a˜o e a iterac¸a˜o. Em cada paraˆmetro, mais de uma expressa˜o
pode ser encontrada separada por v´ırgula.
Co´digo 18: Iterac¸a˜o for
1 for(int x=0; x < 100; ++x){
2 System.Console.WriteLine(x);
3 }
4 for (;;){ // Lac¸o infinito
5 System.Console.WriteLine( " H e l l o , W o r l d ! " );
6 }
Apostila C# 23
Apostila C#
Diogo Cezar Teixera Batista
20 de novembro de 2008
24
7 for(int y=100, int x = 0;x < y; ++x, --y){ // Lac¸o com mais de 1 varia´vel
8 System.Console.WriteLine(y);
9 }
Quando a cla´usula for e´ processada pela primeira vez, se presente, a expressa˜o ou expresso˜es
da declarac¸a˜o inicializadora sa˜o executadas na ordem que elas esta˜o escritas, este passo ocorre
apenas uma vez. Se a declarac¸a˜o condicional estiver presente, sera´ avaliada, caso contra´rio
o for assume o valor verdadeiro (true). Na avaliac¸a˜o, se o valor obtido for verdadeiro (true) o
comando ou bloco de comandos associados sera˜o executados, ao seu final a terceira declarac¸a˜o ou
declarac¸a˜o de iterac¸a˜o e´ processada e, enta˜o, novamente a declarac¸a˜o condicional e´ processada.
Este fluxo ocorre continuamente ate´ que a declarac¸a˜o condicional seja avaliada como falsa (false)
ou o comando break seja encontrado, como visto anteriormente. O comando continue forc¸a uma
nova iterac¸a˜o.
Co´digo 19: Iterac¸a˜o for (exemplo)
1 using System;
2 class Fibonacci{
3 public static void Main(){
4 int iVezes;
5 Console.Write( " E n t r e d e 1 a 1 0 0 p a r a o n ◦ d e e l e m e n t o s a e x i b i r n a s e q u e^ n c i a
d e F i b o n a c c i : " );
6 // Verifica se os valores entrados esta entre 1 e 100
7 //caso contra´rio pede reentrada
8 do{
9 iVezes = Console.ReadLine ().ToInt32 ();
10 }while(iVezes <1 || iVezes >100);
11 //Cria o vetor dina^micamente
12 int[] iSeq = new int[iVezes ];
13 iSeq [0] = 1;
14 // Preenche o