Os operadores lógicos e relacionais são os mesmos da linguagem C.
Veja os operadores Relacionais:
Operador Aritmético | Significado |
---|---|
== | Igualdade. |
!= | Diferente. |
> | Maior. |
< | Menor. |
>= | Maior ou Igual. |
<= | Menor ou Igual. |
Os operadores lógicos usados:
Operador | Operação | Significado |
---|---|---|
&& | AND | E |
|| | OR | Ou |
! | NOT | Não |
Veja um exemplo de uso:
int main(int argc, const char *argv[]) {
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
int idade;
printf("Digite sua idade: ");
scanf("%d", &idade);
if(idade >= 18 && idade < 70) {
NSLog(@"Voto Obrigatório!");
}
else if(idade >= 16 && idade < 18 || idade >= 70) {
NSLog(@"Voto Opcional!");
}
else {
NSLog(@"Voto Proibido!");
}
[pool drain];
return 0;
}
Outro exemplo:
int main(int argc, const char *argv[]) {
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
char opc;
bool logico;
char *res;
printf("Você Fuma? [S/N] ");
scanf("%c", &opc);
logico = (opc == 'S' || opc == 's');
res = !logico ? "não fuma" : "fuma";
NSLog(@"Ele %s.", res);
[pool drain];
return 0;
}
Também temos o incremento e decremento (tanto pré como pós) em Objective-C, veja um exemplo:
int n1 = 5;
int n2 = 10;
n1++;
n2--;
NSLog(@"%d", n1);
NSLog(@"%d", n2);
No Objective-C temos também o operador ternário, veja um exemplo de uso:
int num;
NSString *verif;
printf("Digite um número: ");
scanf("%d", &num);
verif = num % 2 == 0 ? @"par" : @"ímpar";
NSLog(@"O número %d é %@.", num, verif);
Já o if, else e else if usamos assim:
int num;
printf("Digite um número: ");
scanf("%d", &num);
if(num < 20) {
NSLog(@"%d é menor que 20!", num);
}
else if(num > 20) {
NSLog(@"%d é maior que 20!", num);
}
else {
NSLog(@"%d é igual a 20!", num);
}
E o switch case, assim:
char letra;
NSString *verif;
printf("Digite uma letra: ");
scanf("%c", &letra);
switch((char)toupper(letra)) {
case 'A':
case 'E':
case 'I':
case 'O':
case 'U':
verif = @"vogal";
break;
case 'H':
case 'W':
case 'Y':
verif = @"semivogal";
break;
default:
verif = @"consoante ou não é uma letra";
break;
}
NSLog(@"A letra \"%c\" é %@.", letra, verif);
O while funciona dessa forma no Objective-C:
int num, cont = 0;
printf("Digite um número: ");
scanf("%d", &num);
while(cont <= num) {
NSLog(@"%d", cont);
cont++;
}
Podemos usar o break e o continue, dessa forma:
int num, cont = 0;
printf("Digite um número: ");
scanf("%d", &num);
while(true) {
cont++;
if(cont % 2 == 1) {
continue;
}
else if(cont > num) {
break;
}
NSLog(@"%d", cont);
}
Temos também o do while, que garante a execução de pelo menos uma vez do código, dessa forma:
int num, cont = 0;
printf("Digite um número: ");
scanf("%d", &num);
do {
NSLog(@"%d", cont);
cont++;
}
while(cont <= num);
E o for, usado quando sabemos quantas vezes se repetirá o código, assim:
int i; // Declare fora do laço em Objective-C
for(i = 0; i < 10; i++) {
NSLog(@"%d", i);
}
Os arrays fazemos de forma semelhante ao C também, como podem ver:
int algarismos[2] = {5, 10};
int i;
for(i = 0; i < sizeof(algarismos) / sizeof(int); i++) {
NSLog(@"%d", algarismos[i]);
}
Assim como as matrizes:
int numeros[2][5] = {{0, 2, 4, 6, 8},
{1, 3, 5, 7, 9}};
int l, c;
for(l = 0; l < 2; l++) {
for(c = 0; c < 5; c++) {
printf("%d ", numeros[l][c]);
}
printf("\n");
}
Mas com objetos (incluind NSString), é preferível fazer assim:
NSArray *itens = [NSArray arrayWithObjects: @"Item 1", @"Item 2", nil]; // Não esqueça do nil no final
int i;
for(i = 0; i < [itens count]; i++) {
NSLog(@"%@", [itens objectAtIndex: i]);
}
O mesmo código usando um for iterator:
NSArray *itens = [NSArray arrayWithObjects: @"Item 1", @"Item 2", nil];
NSString *i;
for(i in itens) {
NSLog(@"%@", i);
}
Para verificar se um item existe no array, fazemos assim:
NSArray *frutas = [NSArray arrayWithObjects: @"Maçã", @"Uva", @"Pêssego", nil];
if([frutas containsObject: @"Banana"]) {
NSLog(@"A fruta \"banana\" está no array!");
}
else {
NSLog(@"A fruta \"banana\" não foi encontrada no array!");
}