Teoria

Introdução

Fala aí, aqui é o Guga do Responde Aí! Tudo bem com você?

Programar parece uma coisa de outro mundo, né? Porém, eu estou aqui para te dizer que não é e que vamos iniciar a nossa jornada com o que chamamos de função main.

Mas por que devemos saber o que é essa função?

Simples! Pois sem ela um programa na linguagem C nunca funcionará. Ela é a principal e na grande maiorias das vezes a primeira estrutura que nós codificamos quando vamos desenvolver um programa.

Função main

Assim que um programa inicia, a primeira coisa que ele faz é chamar a função principal que na linguagem C é conhecida como main.

Nós iremos nos aprofundar no conceito de função posteriormente, mas para entendermos essa parte, considere uma função como um local em que as instruções de um programa podem ser escritas (escopo).

Beleza, mas o que essa função principal faz?

Só para termos uma ideia, é dentro dela que as entradas dos programas são reconhecidas, processadas e uma saída é gerada. Além disso, ela também é responsável por encerrar o programa informando se foi ou não uma execução bem-sucedida a partir do retorno de um código.

Então, lembre-se da função main como o esqueleto do seu programa!

Mas que papo é esse de retorno de código?

Vamos imaginar um programa que já processou tudo aquilo que tinha que processar e agora vai se encerrar. De forma simples, o que ele faz é chamar o sistema operacional para avisar que está se encerrando e é nessa parte que ele entrega um código. Esse código, por sua vez, será analisado pelo sistema operacional e pode indicar duas coisas:

  • Se for um código de valor 0, a execução do programa foi bem-sucedida;
  • Se for um código de valor não-zero (diferente de 0), o programa possui erros que serão reconhecidos especificamente por esse valor.

Só para não viajarmos na maionese, imagine uma loja com diversos funcionários e um gerente. Da mesma forma que o gerente tem que administrar os funcionários e todo o funcionamento da loja, um sistema operacional tem o papel de administrar os recursos do computador e todos os processos sendo executados.

Sabendo disso, vamos criar um contexto:

Imagine que durante o processamento de um programa houve uma divisão por 0 e um erro foi gerado.

Basicamente, como a execução não foi bem-sucedida e o programa foi encerrado inesperadamente, um código de valor não-zero foi enviado para o sistema operacional. Mais especificamente, esse código possui o valor 1 e sinaliza erros diversos, esses que serão prontamente corrigidos pelo sistema operacional ao ter conhecimento da situação.

Exatamente o mesmo ocorre para os outros erros, que por sua vez possuem outros códigos e diferentes formas de serem tratados.

Declarando a função main

Agora que nós já sabemos o que é a função main, está na hora de aprendermos a declará-la em um programa da linguagem C:

Basicamente para declarar a função main nós colocamos o tipo de retorno dela, que são números inteiros (por isso a abreviação int). O nome da função (main) seguida da abertura e do fechamento de parênteses. Em seguida, abrimos e fechamos as chaves para alocar o código principal do programa e ainda dentro das chaves, mas como última instrução, colocamos um retorno de valor 0, através do comando return (se a execução chegou até ali quer dizer que ela foi bem-sucedida).

Não quebre tanto a cabeça nesse momento para desvendar alguns desses termos que apareceram, o importante aqui é lembrar desse formato de declaração. Grande parte desse conteúdo é visto apenas mais para frente no tópico de funções.

Anatomia de um programa

Apesar de já sabermos declarar a função principal de um programa, na grande maioria dos casos nós precisaremos de bibliotecas para complementar o nosso código.

Mas o que é uma biblioteca?

Para ficar mais fácil, vamos criar um contexto:

Imagine uma pessoa que não assinou o Responde Aí! e precisa urgente achar a resposta de um dos seus livros de engenharia. Além disso, imagine que o buscador Google disponibilizasse apenas a lista de todos os sites do mundo em ordem alfabética.

Eu tenho medo só de pensar nesse mundo! Pois esse aluno iria demorar uma eternidade para achar o seu livro (sendo otimista).

Uma biblioteca é mais ou menos o que o buscador Google é para nós hoje, uma ferramenta capaz de entregar coisas muito úteis e que já estão prontinhas para uso. As coisas funcionam mais ou menos assim, da mesma forma que com o Google basta incluirmos um assunto de pesquisa para encontrarmos aquilo que queremos, em um programa basta incluirmos uma biblioteca para termos acesso a códigos prontos que executam aquilo que queremos.

Sabendo disso, agora nós podemos reservar um espacinho exclusivo na declaração da função main para a inclusão de bibliotecas:

Não podemos perder essa oportunidade, que tal incluirmos uma biblioteca para desenvolvermos o nosso primeiro programa utilizando a linguagem C?

Nós incluiremos uma biblioteca chamada stdio, ela é responsável por disponibilizar as principais funções de leitura de dados e impressão de informações da linguagem C.

Para incluí-la basta escrevermos a instrução de inclusão #include seguida do nome da biblioteca com a extensão .h entre os sinais de menor e maior.

Essa imagem aqui está fazendo exatamente esse processo:

Pronto! Agora que incluímos a biblioteca stdio, podemos utilizar todas as funcionalidades que ela nos disponibiliza. Para o nosso primeiro programa, utilizaremos a função printf que é responsável por imprimir informações na tela do usuário:

Para isso, basta escrevermos printf e entre parênteses e aspas duplas colocarmos aquilo que queremos imprimir.

É só isso! Nós acabamos de construir o nosso primeiro programa na linguagem C. O objetivo dele é imprimir a frase “Hello World!” na tela (esse é o primeiro programa que todos os programadores desenvolvem na vida).

Novamente, não se preocupe com a biblioteca stdio e suas funções nesse momento, elas só foram utilizadas para que pudéssemos escrever o nosso primeiro programa. Para você não ficar preocupado, nós veremos todos esses recursos novamente de forma mais aprofundada no tópico “Entrada e saída de dados”.

Agora que nós já conhecemos o ponto de partida para se programar na linguagem C, está na hora de resolvermos alguns exercícios de fixação!

Te encontro na página aqui do lado.

Declarando a função main

Anatomia de um programa

Exercícios Resolvidos

Exercício Resolvido #1

Explique quais são as responsabilidades da função main em um programa escrito na linguagem C.

Passo 1

Uma das principais responsabilidades da função main é fornecer a estrutura de desenvolvimento para todo programa escrito na linguagem C.

Passo 2

Além disso, é responsabilidade dessa função informar ao sistema operacional através de códigos se a execução de um programa foi ou não bem-sucedida. Esses códigos podem indicar duas coisas:

  • Se for um código de valor 0, o programa foi executado corretamente;
  • Se for um código de valor não-zero, o programa foi finalizado de forma inesperada por conta de algum erro que será identificado especificamente por esse valor.

Resposta

Com isso, podemos concluir que a função main é o esqueleto de todo programa na linguagem C.

Exercício Resolvido #2

Defina o que é uma biblioteca e qual é a sua função no desenvolvimento de um programa.

Passo 1

Uma biblioteca nada mais é do que um arquivo que fornece para nós inúmeros código prontos para uso.

Passo 2

Além disso, podemos dizer que a função de uma biblioteca é economizar tempo de desenvolvimento através da disponibilização de códigos (complexos) de forma simples.

Resposta

Ei, a resposta está no passo a passo :)

Exercício Resolvido #3

Faça uma declaração da função main indicando através de comentários os espaços reservados para a escrita do código principal e inclusão de bibliotecas.

Comentários na linguagem C são feitos da seguinte forma:

Passo 1

As bibliotecas são inclusas antes da declaração da função main. Dessa forma, podemos reservar o seu espaço antes de qualquer outra coisa:

Passo 2

Por outro lado, antes de reservarmos o espaço para o código principal devemos declarar a função main, pois ela é a estrutura principal para o desenvolvimento de todos os programas na linguagem C (código principal). Essa declaração fica da seguinte forma:

Resposta

Por fim, com a função main declarada, nós podemos reservar o espaço para a escrita do código principal de um programa:

Exercício Resolvido #4

Faça a inclusão da biblioteca stdio.

Passo 1

Para incluirmos uma biblioteca devemos utilizar o comando #include.

Resposta

Esse comando, por sua vez, deve ser separado por um espaço em branco do nome da biblioteca que será inclusa adicionada da extensão .h (arquivo header) entre os sinais de menor e maior.

Com base nisso, a inclusão da biblioteca stdio é feita da seguinte forma:

Exercício Resolvido #5

Observe o seguinte programa desenvolvido na linguagem C:

Indique em quais linhas de código se encontram os seguintes itens:

  • Inclusão de biblioteca;
  • Código principal.

Passo 1

Tudo o que nós precisamos para resolver essa questão é conhecer a anatomia geral de um programa.

Dessa forma, começaremos pela inclusão de biblioteca, uma vez que elas são inclusas antes da declaração da função main através da utilização do comando #include. Com uma breve análise, conseguimos identificar a utilização das bibliotecas stdio e math que foram inclusas nas linhas 01 e 02, respectivamente.

Passo 2

Por fim, identificaremos o código principal desse programa. Sabemos que o código principal é tudo aquilo que se encontra dentro da estrutura da função main, por esse motivo, o código principal desse programa se trata apenas de uma impressão na linha 06, uma vez que a função principal foi declarada na linha 04 e as chaves de sua estrutura foram abertas na linha 05.

Resposta

Ei, a resposta está no passo a passo :)

Exercício Resolvido #6

Um programa ao ser finalizado forneceu ao sistema operacional um código de valor não-zero. O que podemos concluir sobre esse programa?

Passo 1

A primeira coisa que nós devemos entender é que um programa ao ser finalizado sempre retorna um código (uma das responsabilidades da função main).

Resposta

Com base nisso, por se tratar de um código de valor não-zero podemos concluir que o programa foi finalizado de forma inesperada, pois esses códigos geralmente estão ligados a erros de execução.

Exercício Resolvido #7

Observe a seguinte declaração da função main e responda.

Qual é o erro de declaração que impede que o programa seja compilado?

Passo 1

Para encontrar esse erro, podemos rever os passos para a declaração da função principal. Começando pelo tipo de retorno, ele está certinho?

A resposta é sim, uma vez que o tipo int foi utilizado.

Passo 2

Beleza, sabemos que o problema não é no tipo de retorno. Bom, o nome da função é seguido da abertura e do fechamento de parênteses?

A resposta é não! Encontramos o nosso erro.

Resposta

O erro de declaração está na falta dos parênteses após a declaração do nome main. A forma correta de declaração é:

Exercício Resolvido #8

Explique o motivo pelo qual sabemos qual será o último comando de qualquer programa já na declaração da função main.

Passo 1

Tá na hora do brainstorming!

Considerando uma execução correta, nós sabemos que a última coisa que um programa faz é indicar se sua execução foi ou não bem-sucedida.

Se pensarmos um pouquinho, chegamos à conclusão de que a última instrução de um programa sempre será o retorno do valor 0 (código de sucesso).

Resposta

Logo, nós sempre saberemos o último comando de um programa na declaração da main, pois esse comando é codificado na main através do return.