<p class="p1">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.</p> <h2>A prática faz a perfeição<span style="font-size: 13px;"> </span></h2> <p class="p3">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 <strong><em>File > New > Project</em></strong>.</p> <p class="p3"><span class="img_editor"><img src="https://www.oficinadanet.com.br/imagens/post/9920/img01.png" alt="" /></span></p> <p class="p2">Feito isso, vamos escolher o tipo de projeto. Como queremos apenas trabalhar com conceitos iniciais da linguagem C vamos criar um projeto para <strong>OS X</strong>. Selecione a opção <strong>Application</strong> na seção <strong>OS X</strong>, do lado esquerdo da tela e escolha em seguida a opção <strong>Comand Line Tool</strong>, do lado direito. Para concluir esta etapa clique em <strong>Next</strong>.</p> <p class="p3"><span class="img_editor"><img src="https://www.oficinadanet.com.br/imagens/post/9920/img02.png" alt="" /></span></p> <p class="p3">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:</p> <ul> <li><strong>Product Name:</strong> GuiaDev-LinguagemC</li> <li><strong>Organization Name:</strong> seu nome</li> <li><strong>Company Identifier:</strong> com.seunome</li> <li><strong>Type: </strong>C</li> </ul> <p class="p3">Mantenha a opção Use <strong>Automatic Reference Counting</strong> marcada e clique em <strong>Next</strong> para salvar o projeto.</p> <p class="p3"><span class="img_editor"><img src="https://www.oficinadanet.com.br/imagens/post/9920/td_img03.png" alt="" /></span></p> <p class="p3">Escolha o local onde vai salvar o projeto, desmarque a opção <strong>Create local git repository for this project</strong>. Essa opção é muito utilizada quando se trabalha com controle de versão, mas não é o nosso caso no momento.</p> <p class="p3">Clique em <strong>Create</strong> para concluir o processo de criação do projeto.</p> <p class="p3"><span class="img_editor"><img src="https://www.oficinadanet.com.br/imagens/post/9920/img04.png" alt="" /></span></p> <h2><strong>Overview</strong></h2> <p class="p2">Para fins de estudo da linguagem C, no projeto criado o arquivo importante é o <strong>main.c</strong>. Arquivos com a extensão <strong>.c</strong> indicam que é um arquivo da linguagem C.</p> <p class="p3">Antes de começarmos a rodar códigos em linha de comando, vamos ver o conteúdo inicial do arquivo <strong>main.c</strong>, que foi criado automaticamente quando salvamos o projeto.</p> <p class="p2"><span class="img_editor"><img src="https://www.oficinadanet.com.br/imagens/post/9920/td_img05.png" alt="" /></span></p> <p class="p3">A linguagem C é uma liguagem tipada, repare isso na implementação da função <strong>main</strong>. 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.</p> <p class="p3">A palavra chave <strong>function</strong> que é comum em muitas outras linguagens, em C ela está ausente. O corpo da função <strong>main</strong> 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 <strong>#include </strong> foi utilizada antes da função <strong>main. </strong></p> <p class="p3">A função <strong>printf</strong> é uma função de saída, que é capaz de escrever no Xcode console a informação passada por parâmetro, que nesse caso é <strong>"Hello World!n"</strong>. 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.</p> <p class="p3">A função <strong>main </strong>finaliza retornando 0 (zero). Quando um programa retorna 0 (zero), indica que o processamento ocorreu com sucesso.</p> <h2><strong>Contruindo e Executando</strong></h2> <p class="p3">Agora que você já sabe o que a função <strong>main </strong>faz, é hora de rodar a linha de comando. Para construir a aplicação, o código que está em <strong>main.c</strong> é compilado em um binário, que é então executado. Para rodar a linha de comando, clique no botão <strong>Run</strong> 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.</p> <p class="p2"><span class="img_editor"><img src="https://www.oficinadanet.com.br/imagens/post/9920/img06.png" alt="" /></span></p> <p class="p3">Após rodar você deverá ver o seguinte no Xcode console:</p> <p class="p2"><span class="img_editor"><img src="https://www.oficinadanet.com.br/imagens/post/9920/td_img07.png" alt="" /></span></p> <h2><strong>Características Importantes</strong></h2> <p class="p3">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.</p> <h3><strong>Data Types</strong></h3> <p class="p3">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 (<a rel="nofollow" href="http://en.wikipedia.org/wiki/C_data_types" target="_blank">veja aqui</a>).</p> <p class="p3">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 <strong>char</strong>. </p> <p class="p3"><strong>Veja no exemplo a seguir:</strong></p> <p class="p3"><code>char firstName[] = "Jonh";</code></p> <p class="p3">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 <strong>var <em>keyword</em></strong>. A linguagem C não precisa do uso de <strong>var </strong>para a declaração de variáveis, a variável é declarada com um prefixo, que é o tipo de dado que ela vai receber.</p> <p class="p3"><em><strong>Código em JavaScript</strong></em></p> <p><code>var a = 3;<br />var b = 3.456;<br />var c = 'a';</code></p> <p class="p2"> </p> <p class="p3"><em><strong>Código em C</strong></em></p> <p class="p3"><code>int a = 3;<br />float b = 3.456;<br />char c = 'a';</code></p> <p class="p3">Vamos ver agora na prática como fica tudo isso. Vá até o XCode e no arquivo <strong>main.c</strong> localize a função <strong>main</strong>. Adicione à função o código do bloco a seguir, que está logo após o comentário <strong>Variables</strong>.</p> <p class="p3"><code>int main(int argc, comnst char *argv[])<br />{    <br />    //insert code here…<br />    printf("Hello, World!n");<br /><br />    // Variables<br />    int a = 3;<br />    float b = 3.456;<br />    char c = 'a'; <br /><br />    printf("Isso é um inteiro: %in", a);<br />    printf("Isso é um decimal: %fn", b);<br />    printf("Isso é uma string: %cn", c);<br /><br />    return 0;<br />}</code></p> <p class="p3">Após alterar o código, salve e rode novamente, para que seja recompilado e exibido no Xcode Console.</p> <h3><strong>Funções</strong></h3> <p class="p3">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 <strong>main.c</strong> e antes da declaração da função <strong>main</strong>, declare a nova função:</p> <p class="p3"><code>int multiplyByFour(int a);</code></p> <p class="p3">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 <strong>main</strong>, escreva o bloco de código que contém a estrutura da função <strong>multiplyByFour</strong>.</p> <p class="p3"><code>int multiplyByFour(int a)<br />{<br />     return a * 4;<br />}</code></p> <p class="p3">Agora vamos chamar a execução da nova função dentro da função <strong>main</strong>. Atualize o código da função <strong>main</strong> inserindo o código a seguir antes do <strong>return</strong> da função.</p> <p class="p3"><code>printf("Dois multiplicado por quatro é %in",multiplyByFour(2));</code></p> <p class="p3">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á <strong>void</strong>.</p> <h3><strong>Estruturas</strong></h3> <p class="p3">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.</p> <p class="p3"><code>// Structures<br />struct Album {<br />    int year;<br />    int tracks;<br />};<br />struct Album myAlbum;<br />struct Album yourAlbum;<br /><br />myAlbum.year = 1998;<br />myAlbum.tracks = 20;<br /><br />yourAlbum.year = 2001;<br />yourAlbum.tracks = 18;<br /><br />printf("Meu álbum foi lançado em %i e tem %i faixas.n", myAlbum.year, myAlbum.tracks);<br />printf("Seu álbum foi lançado em %i e tem %i faixas.n", yourAlbum.year, yourAlbum.tracks);</code></p> <p class="p3">Começamos declarando o tipo da nova estrutura, chamada <strong>Album</strong>. 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.</p> <p class="p3">Feito isso nós podemos setar os valores para as variáveis e recuperá-los posteriormente para exibição na tela.</p> <p class="p3">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.</p>