![]() |
Tela inicial do GDB Online ajustada para linguagem C |
O primeiro programa
Para começar a por a mão na massa, entre no GDB Online e no canto superior direito da tela ajuste o seletor Language para C. Assim teremos o nosso primeiro programa de exemplo, do tipo "Aló Mundo" que mostra uma mensagem na tela.
Para executar o programa click no botão RUN ou pressione F9. O resultado será mostrado na parte inferior da tela. Pressionando um ENTER o programa volta ao modo inicial para edição de códigos. Veja detalhes abaixo:
![]() |
Destaques em vermelho para o botão RUN, o seletor de linguagem e a janela de saída |
Repare na estrutura do seu primeiro programa:
- /**************************************************************************
- Welcome to GDB Online.
- GDB online is an online compiler and debugger tool for C, C++, Python, Java, PHP, Ruby, Perl,
- C#, OCaml, VB, Swift, Pascal, Fortran, Haskell, Objective-C, Assembly, HTML, CSS, JS, SQLite, Prolog.
- Code, Compile, Run and Debug online from anywhere in world.
- ***************************************************************************/
- #include <stdio.h>
- int main()
- {
- printf("Hello World");
- return 0;
- }
Comentários
A primeira coisa que reparamos são os comentários em múltiplas linhas que iniciam na linha 1 com o operador /* e terminam na linha 8 com o operador */. Vimos algo igual no curso de algoritmos e o que foi falado lá, continua valendo, isto é, tudo que está entre essas linhas é ignorado é serve apenas para documentar o código e facilitar a vida da equipe de desenvolvimento. Aqui no caso temos apenas às Boas Vindas do pessoal do GDB.
Quando quisermos comentar apenas uma linha ou inserir um comentário no meio de uma instrução podemos utilizar o operador //.
Arquivos de Cabeçalho
Toda vez que você encontrar uma instrução parecida com #include <stdio.h>, você estará dizendo ao programa para ele incluir (#include ) um arquivo de cabeçalho (<nomedoarquivo.h>). Esse arquivo de cabeçalho é geralmente um arquivo de texto com instruções uteis e necessárias para que um programa execute algo.
No nosso caso queremos mostrar um "Hello World" na tela com a função printf(). Para isso precisamos do arquivo de cabeçalho do C que especifica como o programa deve trabalhar com entradas e saídas. O termo stdio.h vem de Standard Input/Out header, que podemos entender como cabeçalho padrão de Entradas e Saídas.
Os arquivos de cabeçalho são posicionados no início de um programa, abaixo dos comentários de documentação. Em Sistemas Embarcados, arquivos de cabeçalho geralmente são usados para garantir o funcionamento de sensores e módulos, através da inclusão de bibliotecas. Veremos exemplos no momento apropriado.
A função principal main()
Assim como Portugol tinha a instrução inicial programa {}, o C terá uma função principal no início chamada de main(), iniciada por um abre chaves { e encerrada por um fecha chaves }. Dentro dos quais teremos nossas instruções que geralmente são finalizadas a cada linha por um ponto e vírgula ;
Conforme já explicamos no curso de algoritmos uma função pode ou não retornar um valor ao ser encerrada. Aqui a nossa função está retornando o número inteiro 0 com a instrução return 0. Isso diz para o Sistema Operacional que o programa encerrou corretamente sem erros.
Vamos lembrar que vimos no curso anterior que precisamos especificar antes no nome da função o tipo de dados que a função vai retornar. Se aqui ela retorna um número inteiro, precisamos colocar a instrução int antes do seu nome. Por isso o uso do int main().
Às vezes encontraremos funções main() que não encerram com um return. Nesses casos a função não retorna nada. Por isso, no seu início teremos a instrução void que podemos entender como "vazia". Em sistemas embarcados com placas mais simples nosso main() não vai retornar nada. Já em single board computers como Raspberry Pi podemos ter a preocupação de retornar algo para o Sistema.
Outros tipos de dados
Além do inteiro int, o C trabalha com outros tipos de dados. Esses tipos podem ocupar diferentes tamanhos em bytes. Alguns diferenciam-se dos outros por usar ou não sinal negativo. Se formos explicar todos os detalhes, isso ficaria muito complicado para um início de curso. Por isso, por enquanto veremos apenas o básico nos restringindo aos tipos:
- int - para números inteiros. Exemplo: 100
- float - para números decimais que serão separados por pontos. Exemplo: 1.71
- char - para um caractere que será delimitado por apostrofe. Exemplo: 'S'
- _Bool - para valores booleanos que geralmente representam verdadeiro ou falso, mas que no C usaremos 0 para falso e 1 para verdadeiro.
Apenas para constar, também temos o tipo double para números com mais casas decimais do que float, mas que nesse momento do curo não nos parece relevante.
Repare que eu não falei de cadeia de caracteres como no Portugol. É porque no C elas são chamadas de Strings e veremos como são armazenadas em breve.
A função printf()
No curso de algoritmos vimos que instruções seguidas de abre e fecha parenteses () geralmente são chamadas de funções e servem para executar alguma tarefa. Dentro desses parenteses podemos ter parâmetros para a que a função seja executada.
No caso da função printf() ela serve para sair com informações na tela e dentro de seus parenteses colocamos os parâmetros necessários para isso. Quando desejamos mostrar na tela uma sequência de caracteres essa informação deverá estar entre "aspas". Em linguagem C essa cadeia de caracteres é chamada de literal string.
Também podemos inserir nesta string caracteres especiais que passam ações para a função. Por exemplo \n promove uma quebra de linha. Experimente fazer a seguinte alteração na linha 13 do seu programa e mande executar com o botão RUN:
printf("Hello \nWorld");
Repare que agora Hello World foi escrito em duas linhas na janela de saída, com a palavra World indo para a linha de baixo. Experimente agora alterar o programa trocando o \n por \t e mande executar:
printf("Hello \tWorld");
Reparou que agora o Hello World ficou com a palavra World mais espaçada como uma tabulação?
Variáveis
No curso de algoritmos vimos que variáveis são elementos que servem para armazenar provisoriamente os nosso dados e que o operador = serve para atribuir valores a essas variáveis. Vimos também que devemos criar variáveis antes de usá-las com as chamadas declarações de variáveis, que são instruções que definem o tipo de dados que a variável vai armazenar. Lembrando que isso deve ser feito preferencialmente no início do programa.
Quando uma linguagem exige que os tipos de dados das variáveis sejam especificados no início do programa chamamos a linguagem de fortemente tipada. Exemplo: C e Java. Já aquelas que não fazem esse tipo de exigência, são chamadas fracamente tipadas. Exemplo: PHP e Javascript.
Vamos fazer algumas alterações no nosso primeiro programa mostrando como trabalhamos com variáveis através de comentários // na mesma linha. Faça essas alterações no seu código e mande rodar:
- /*************************************************************
- Programa: Hello World
- Autor: GDB online
- Modificacao: Em 28/08/2024 por Julio Ribeiro
- Funcao: Mostrar exemplo de uso de variaveis e comentarios
- **************************************************************/
- #include <stdio.h>
- int main()
- {
- int contador=0; // declara a variavel "contador" e atribui o valor 0
- float preco=1.99; // declara a variavel "preco" e atribui o valor 1.99
- char resposta='S'; // declara a variavel "resposta" e atribui o valor 'S'
- _Bool ligado=1; // declara a variavel "ligado" e atribui o valor 1 ou verdadeiro
- printf("Hello World\n");
- printf("Contador: %d\n",contador);
- printf("Preço: %f\n",preco);
- printf("Resposta: %c\n",resposta);
- printf("Ligado: %d",ligado);
- return 0;
- }
Repare que desta vez utilizamos a função printf() de um jeito diferente. Fizemos um concatenação, isto é, uma união de informações, juntando uma string com o valor de uma variável. Nesta situação, a separação dos dois elementos é feito por uma vírgula. Assim temos:
printf("String",variavel)
Porém essa String deverá conter também códigos especiais de formatação das variáveis. Por exemplo, %d ou %1 informa que ao printf que ele deverá ser mostrado um inteiro. Já o %c informa que deverá ser mostrado um caractere.
Temos também o %f que informa que será mostrado um float, isto é, um decimal. Nesse caso não estamos controlando quantas casas decimais serão mostradas, mas se você alterar o seu código da linha 19 inserir um .2 antes entre o % e o f, assim: printf("Preço: %.2f\n",preco); Verá que o preço sairá com duas casas decimais.
Artifício para lidar como booleanos
Podemos fazer uso de um arquivo de cabeçalho para incluir um tipo de dados bool ao invés de _Bool que aceita os literais true e false, porém seu retorno continuará 1 e 0. Exemplo:
- #include <stdio.h>
- #include <stdbool.h> // arquivo de cabeçalho para booleanos
- int main() {
- bool verdadeiro = true;
- bool falso = false;
- printf("%d\n", verdadeiro); // Retorna 1 (true)
- printf("%d", falso); // Retorna 0 (false)
- return 0;
- }
Na próxima aula trabalharemos com entradas de dados e veremos operadores.
Referências
DAMAS, L. Linguagem C. Rio de Janeiro: LTC Editora, 2007.
GBD ONLINE. C for Beginners. Disponível em: <https://learn.onlinegdb.com/c_for_beginners> Acesso em 05 ago. 2024.
GBD ONLINE. C Programming Examples Disponível em: <https://learn.onlinegdb.com/c_program_examples> Acesso em 05 ago. 2024.
W3SCHOOLS. C Tutorial. Disponível em: <https://www.w3schools.com/c/index.php> Acesso em 05 ago. 2024.