Para desenvolver aplicações para iPhone e iPad é necessário conhecer a linguagem de programação Objective-C. Ela é derivada da linguagem C, e por esse motivo vamos ver nesses primeiros artigos do Guia Dev iOS uma introdução à linguagem C, com alguns fundamentos básicos para que possa entender as primeiras linhas de código em Objective-C.

A prática faz a perfeição

Uma linguagem de programação pode ser melhor compreendida se você estuda praticando. Vamos abrir o Xcode e criar um novo projeto, onde iremos escrever algumas linhas de código em linguagem C. Para criar um novo projeto vá até o menu e selecione as opções File > New > Project.

Feito isso, vamos escolher o tipo de projeto. Como queremos apenas trabalhar com conceitos iniciais da linguagem C vamos criar um projeto para OS X. Selecione a opção Application na seção OS X, do lado esquerdo da tela e escolha em seguida a opção Comand Line Tool, do lado direito. Para concluir esta etapa clique em Next.

O próximo passo é nomearmos o projeto (Product Name) e informarmos o nome da organização e um identificador. Veremos a finalidade de cada um desses itens posteriormente. Por enquanto utilize as seguintes informações para preencher os campos:

  • Product Name: GuiaDev-LinguagemC
  • Organization Name: seu nome
  • Company Identifier: com.seunome
  • Type: C

Mantenha a opção Use Automatic Reference Counting marcada e clique em Next para salvar o projeto.

Escolha o local onde vai salvar o projeto, desmarque a opção Create local git repository for this project. Essa opção é muito utilizada quando se trabalha com controle de versão, mas não é o nosso caso no momento.

Clique em Create para concluir o processo de criação do projeto.

Overview

Para fins de estudo da linguagem C, no projeto criado o arquivo importante é o main.c. Arquivos com a extensão .c indicam que é um arquivo da linguagem C.

Antes de começarmos a rodar códigos em linha de comando, vamos ver o conteúdo inicial do arquivo main.c, que foi criado automaticamente quando salvamos o projeto.

A linguagem C é uma liguagem tipada, repare isso na implementação da função main. Logo no início, antes do nome da função, é informado o tipo de dado que será retornado. Note que os argumentos da função também são tipados.

A palavra chave function que é comum em muitas outras linguagens, em C ela está ausente. O corpo da função main inicia com um comentário de linha (//). A segunda linha do corpo da função é uma outra função, que é parte da biblioteca padrão da linguagem C, por isso a definição #include foi utilizada antes da função main.

A função printf é uma função de saída, que é capaz de escrever no Xcode console a informação passada por parâmetro, que nesse caso é "Hello World!n". O n especifica uma quebra de linha, a criação de uma nova linha, onde tudo o que for escrito após o "Hello World!" ficará abaixo dele.

A função main finaliza retornando 0 (zero). Quando um programa retorna 0 (zero), indica que o processamento ocorreu com sucesso.

Contruindo e Executando

Agora que você já sabe o que a função main faz, é hora de rodar a linha de comando. Para construir a aplicação, o código que está em main.c é compilado em um binário, que é então executado. Para rodar a linha de comando, clique no botão Run no topo esquerdo da tela do Xcode. Se não estiver conseguindo ver a área de debug na parte inferior direita da tela, clique no botão central das opções de visualização na parte superior direita da tela.

Após rodar você deverá ver o seguinte no Xcode console:

Características Importantes

A seguir veremos algumas características importantes da linguagem C, sem muitos detalhes, apenas para conhecimento mesmo. Quando iniciarmos os trabalhos com o Objective-C, veremos mais detalhes.

Data Types

Outra importante diferença entre a linguagem C e outras linguagens como Ruby, PHP e JavaScript é que C é uma liguagem tipada. Isso significa que o tipo de dados de uma variável precisa ser explicitamente especificado. Em C os data types fundamentais são: characters (char), integers (int) e números de ponto flutuantes, ou simplesmente os decimais (float). Para esses tipos fundamentais, temos alguns adicionais que podem ser implementados, como double, long e unsigned int. Para conhecer a lista completa dos tipos básicos em C, a Wikipedia possui um conteúdo interessante.

As strings na linguagem C são armazenadas em um array de caracteres, sendo assim, quando trabalharmos com string temos que definir o tipo como char.

Veja no exemplo a seguir:

char firstName[] = "Jonh";

Vamos usar dois blocos de códigos para explorarmos melhor a diferença entre os tipos de dados. O primeiro bloco de código é escrito em JavaScript, e o segundo é escrito em C. Em JavaScript, uma variável é geralmente declarada com o var keyword. A linguagem C não precisa do uso de var para a declaração de variáveis, a variável é declarada com um prefixo, que é o tipo de dado que ela vai receber.

Código em JavaScript

var a = 3;
var b = 3.456;
var c = 'a';

Código em C

int a = 3;
float b = 3.456;
char c = 'a';

Vamos ver agora na prática como fica tudo isso. Vá até o XCode e no arquivo main.c localize a função main. Adicione à função o código do bloco a seguir, que está logo após o comentário Variables.

int main(int argc, comnst char *argv[])
{
//insert code here…
printf("Hello, World!n");

// Variables
int a = 3;
float b = 3.456;
char c = 'a';

printf("Isso é um inteiro: %in", a);
printf("Isso é um decimal: %fn", b);
printf("Isso é uma string: %cn", c);

return 0;
}

Após alterar o código, salve e rode novamente, para que seja recompilado e exibido no Xcode Console.

Funções

Como em outras linguagens, uma função na linguagem C nada mais é do que um bloco de código com uma performance desenhada para uma situação específica. Vamos entender melhor na prática, volte ao arquivo main.c e antes da declaração da função main, declare a nova função:

int multiplyByFour(int a);

Essa função que vamos criar irá multiplicar um valor qualquer, que será passado como parâmetro para a função, por 4, retornando o resultado. Após a função main, escreva o bloco de código que contém a estrutura da função multiplyByFour.

int multiplyByFour(int a)
{
return a * 4;
}

Agora vamos chamar a execução da nova função dentro da função main. Atualize o código da função main inserindo o código a seguir antes do return da função.

printf("Dois multiplicado por quatro é %in",multiplyByFour(2));

Se você tiver uma função que não retornará nenhum valor, por exemplo, só irá imprimir alguma informação na tela, o tipo dessa função será void.

Estruturas

Uma estrutura é uma coleção de uma ou mais variáveis, possivelmente de tipos diferentes, agrupadas sob um único nome para fácil manuseio. veja no código a seguir um exemplo de estrutura.

// Structures
struct Album {
int year;
int tracks;
};
struct Album myAlbum;
struct Album yourAlbum;

myAlbum.year = 1998;
myAlbum.tracks = 20;

yourAlbum.year = 2001;
yourAlbum.tracks = 18;

printf("Meu álbum foi lançado em %i e tem %i faixas.n", myAlbum.year, myAlbum.tracks);
printf("Seu álbum foi lançado em %i e tem %i faixas.n", yourAlbum.year, yourAlbum.tracks);

Começamos declarando o tipo da nova estrutura, chamada Album. Após declararmos o novo tipo, nós especificamos as variáveis que serão utilziadas, sempre lembrando de definir o tipo de dados de cada variável. Em seguida definimos 2 álbuns, o myAlbum e o yourAlbum.

Feito isso nós podemos setar os valores para as variáveis e recuperá-los posteriormente para exibição na tela.

Nos próximos artigos nós começaremos a trabalhar com a linguagem Objective-C, que é derivada da linguagem C, que acabamos de ver umas informações básicas. O conhecimento da linguagem C é muito importante para o sucesso na programação para iOS, então não fique parado e pesquise sempre um pouco mais sobre essa linguagem.