Aprenda Objective-C

  • Página Inicial
  • Contato!
  • Tudo sobre Objective-C Parte 1!
  • Tudo sobre Objective-C Parte 2!
  • Tudo sobre Objective-C Parte 3!
  • Tudo sobre Objective-C Parte 4!
  • Tudo sobre Objective-C Parte 2

    Operadores Lógicos e Relacionais

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

    Estruturas Condicionais

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

    Laços de Repetição

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

    Arrays

    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!");
    }