Enviar um café pro programador

Pode me ajudar a transformar cafeína em código?

Código comentado do nosso primeiro programa em C

No artigo passado nós criamos e compilamos nosso primeiro programa em C de nosso curso de programação. Porém, não explicamos exatamente o que aconteceu. Simplesmente mostramos o que escrever e o que fazer.

Em nosso curso você verá sempre, sempre, as coisas bem explicadas. Esse é o diferencial do curso online C progressivo.
Veja agora os comentários, linha por linha, do código C.

Leia esse conteúdo offline: Baixe a Apostila C Progressivo

Como criar seu primeiro programa em C

Hello world em C

No tutorial passado de nossa apostila de C, ensinamos como criar, compilar e executa seu primeiro programa em C, conhecido como "Hello World" ou "Olá, Mundo!".

E mostramos que seu código é:

#include <stdio.h>

int main(void)
{
    printf("Meu primeiro programa - C Progressivo!\n");
    return 0;
}


Pois bem, vamos agora explicar o que é isso tudo.

O que é e para que serve #include <stdio.h>

Como já dissemos aqui e na seção Comece a Programar do site Programação Progressiva, mais especificamente, sobre a Linguagem C, ela é extremamente versátil e poderosa.
O kernel - miolo do sistema - do Linux e do Windows (e da maioria dos sistemas operacionais) é feito, em sua maioria, com a linguagem C.
Programas de alto rendimento, jogos e microcontroladores também podem funcionar sob linguagem C.

O C não está "preparado" ou "no ponto" para você fazer todo e qualquer tipo de aplicação, pois isso o deixaria extremamente lento e pesado, pois teria que incluir muitas funcionalidades.
Quando for programar você vai dizer ao C o que vai fazer e que funções da linguagem C você vai precisar em sua aplicação. E isso é feito, em parte, através da importação de bibliotecas.

Por exemplo, existem bibliotecas gráficas (Allegro, OpenGL etc), que são usadas para criar aplicações gráficas (como jogos ou programas com janelas, botões etc), existem bibliotecas para usar as funções do sistema operacional windows (biblioteca windows.h), existem bibliotecas para fazer cálculos matemáticos (math.h) e por aí vai.

Não existe um número específico de bibliotecas, e podemos, inclusive, criar as nossas. Então é óbvio que o C não vai carregar todas elas automaticamente. Por isso precisamos dizer ao compilador o que vamos usar.

Para fazer isso, usamos o '#include', que é chamado de diretiva e em seguida escrevemos o nome da biblioteca. No caso, vamos usar a biblioteca 'stdio.h'.
Dentro dessa biblioteca existe um código em C.
É como se você dissesse ao C:  'ei, adicione esse arquivo: stdio.h no programa, vou precisar das funções contidas nele'.

O std de 'stdio' é de standard(padrão) e o io é de Input/Output (entrada e saída).
Por entrada, entenda o sistema receber dados, como você digitar algo.
Por saída, entenda como um resultado que o sistema te dá, como uma mensagem na tela.
Existem diversos tipos de entrada e saída, mas essa biblioteca trata das entradas e saídas padrões, como o nome diz.

No nosso caso, vamos usar a função printf como saída de dados.


O que é e para que serve int main(void) { }

main() é a função principal. Sempre que compilamos um código em C, seu início se dará através dessa função. Tudo começa a partir dela.
O código da função é tudo aquilo que fica entre as chaves: {}
Ou seja, seus códigos em C sempre devem possuir a função main.

Nesse nosso primeiro programa, ele simplesmente deve exibir uma mensagem na tela.
Obviamente, o comando para isso deve estar dentro da função main(), senão o código não será executado. Teste. Coloque o printf em outro local e veja o Code Blocks apontar esse erro.




O que é e para que serve printf("Meu primeiro programa - C Progressivo!\n");

Print, em inglês, é imprimir. Se acostume com essa notação.

O que nossa função printf() faz é imprimir uma mensagem na tela. Essa mensagem ou texto, nós chamamos, em programação, de String. Note que:
String -> "Meu primeiro programa - C Progressivo\n"
Não é uma string -> Meu primeiro programa - C Progressivo\n

Se colocar uma frase sem as aspas duplas, obterá um erro, pois a função printf é feita para receber e exibir uma string. Se você não usar as aspas, não estará passando uma string para a printf, portanto seu programa irá mostrar um erro.

Note que, só podemos usar a função printf() porque importamos a biblioteca stdio.h
Essa função está declarada lá nessa biblioteca. O nosso programa final, o executável, também utiliza o código da printf(), porém é inútil ficar repetindo código.

Ao invés disso, guardamos nossos códigos para que possamos reutilizar depois.
Essa é uma função das bibliotecas em C.


Mais adiante, em nosso curso online de C, aprenderemos mais sobre como criar nossas próprias funções, bibliotecas, a manusear strings e o printf.

\n: New line, adicionando uma linha em branco

Já o caractere '\n' é o New Line, ou seja, ele imprime uma linha.
Ou pula de linha. É como se tivéssemos pressionado enter no terminal de comando, pois faz o cursor saltar uma linha.

Aprenderemos mais sobre o \n nosso tutorial sobre a função printf().

Experimente adicionar mais \n e ver o resultado!

#include <stdio.h>

int main(void)
{
    printf("Meu primeiro programa - C Progressivo!\n\n\n");
    return 0;
}

22 comentários:

Sidney Suárez disse...

Saudações, Obrigado pelo curso!
Ainda não encontrei a função do \n no final da mensagem.
Tirei e não fez diferênça...Pra que serve?

Sidney
Sorocaba SP

Apostila C Progressivo disse...

Olá Sidney,

O \n é o 'new line', ele faz com que o cursor do terminal salte para a próxima linha.

Vamos falar sobre ele quando estudarmos em detalhe a função printf, mais à frente.

Mas obrigado por avisar que não tem explicações, adicionamos algo sobre o \n no tutorial.

Unknown disse...

ola pessoal estou gostando muito do site e das explicaçoes so estou com uma duvida quando vou no codigo fonte e tento mudar o que e esta entre aspas no printf ou tiro ou acrecento o barra n manda executar e compilar mas nao acontece nada como faço para fazer alterações no programa :

Apostila C Progressivo disse...

Olá Igor,

tente o contrário: primeiro compile, só depois execute.

Vai ver que o \n, vai aparecer uma linha em branco a mais.

Douglas disse...

Olha, até agora está dando tudo certo, inclusive adicionar \n (e percebo a diferença). Porém, quando vou executar o programa com 3 \n (incluindo o do original), o avast dá como virus... isso é normal?

Apostila C Progressivo disse...

Olá Douglas,

Realmente isso é estranho.
Posta o código que você tá rodando aí para vermos se há algum problema.

Douglas disse...

#include

int main(void)
{
printf("Meu primeiro programa! - C Progressivo!\n\n\n");
return 0;
}

Esse é o programa que usei para criar 3 novas linhas. mas o Avas tá dando como vírus. agora se eu usar o programa

#include

int main(void)
{
printf("Meu primeiro programa! - C Progressivo!\n\n");
return 0;
}

ele roda certinho...

Anônimo disse...

Usando o Keil uVision4, onde visualizo a string?

Guilherme Lessa disse...

Meu avast tbm está dando que o programa gerado pelo code:blocks é um virus. Scaneei o PC com outros antivirus e não apareceu nada. Desativei o Avast e deixei um outro ativo e funcionou beleza. Deve ser um bug do avast em relação ao code:blocks. Afinal o C é tão bom que pode ser utilizado para desenvolver virus. heheh. Abs.

Camila Vieira disse...

OLá o meu não aparece a tela com a descrição, aparece abaixo escrito o que deveria estar na tela preta, e na tela preta aparece uma espécie de resposta do tempo de retorno do comando assim:

Process returned 1990325385<0x76A1F489> execution time: 0.015 s
Press any key to continue

Quando eu pressiono qualquer tecla, a tela some.

Anônimo disse...

Olá Web Design Criação Online e Offline,
a função printf() serve para exibir na telinha preta o que você digitou dentro dos parênteses, por exemplo:

caso eu digite printf("Meu primeiro programa"); aparecerá na telinha preta a frase "Meu primeiro programa", mas você precisa verificar que está escrevendo a função printf("Meu primeiro programa"); dentro das chaves da função main(), ou seja

int main() {
printf("Meu primeiro programa");
return 0;
}

admin disse...

Muito bom mesmo, bem explicado, vai me ajudar muito mesmo na faculdade de Sistemas de informação. Parabéns pelo site.

Guriah disse...

E o "return 0" ???
Pra que serve?
Tem que usar em todos os programas?

Anônimo disse...

olá o primeiro código da este erro,quer dizer, eu faço o código mais ele não executa:


gcc -c "/home/familiamint/Área de Trabalho/C/teste.c" -o "/home/familiamint/Área de Trabalho/C/teste.o"
g++ -o "/home/familiamint/Área de Trabalho/C/teste" "/home/familiamint/Área de Trabalho/C/teste.o"
Process terminated with status 0 (0 minute(s), 0 second(s))
0 error(s), 0 warning(s) (0 minute(s), 0 second(s))

Checking for existence: /home/familiamint/Área de Trabalho/C/teste
Executing: xterm -T '/home/familiamint/Área de Trabalho/C/teste' -e /usr/bin/cb_console_runner "/home/familiamint/Área de Trabalho/C/teste" (in /home/familiamint/Área de Trabalho/C)
Process terminated with status 255 (0 minute(s), 0 second(s))

aguardo um auxílio,valeu!
Parabéns galera do C
progressivo

Anônimo disse...

Olá pessoal digitei tudo mais na hora de executar na aba buid log da isso;

gcc -c "/home/familiamint/Área de Trabalho/C/teste.c" -o "/home/familiamint/Área de Trabalho/C/teste.o"
g++ -o "/home/familiamint/Área de Trabalho/C/teste" "/home/familiamint/Área de Trabalho/C/teste.o"
Process terminated with status 0 (0 minute(s), 0 second(s))
0 error(s), 0 warning(s) (0 minute(s), 0 second(s))

Checking for existence: /home/familiamint/Área de Trabalho/C/teste
Executing: xterm -T '/home/familiamint/Área de Trabalho/C/teste' -e /usr/bin/cb_console_runner "/home/familiamint/Área de Trabalho/C/teste" (in /home/familiamint/Área de Trabalho/C)
Process terminated with status 255 (0 minute(s), 0 second(s))

Valeu C-progressivo

Paulo Ferreira disse...

Saudações!!
Manos, parabens vey!! Muito otimo demais!!!
mas faltou uma linha..
Para que server o "return 0"?

Nemo-Tec disse...

Olá amigo. Trabalho á um tempo com montagem e manutenção configuração e remoção de vírus. Comecei o curso aqui no site dia 11/05/16. Estou curtindo bastante e até aqui tudo certo. Muito bem explicado.
Sucesso!

Anônimo disse...

Muito bem explicado, mas pra que serve o return = 0 ? Quer dizer que nenhum dado será retornado para a função printf ?

Unknown disse...

Parabéns pela iniciativa do curso, comecei ontem e estou bastante empolgado.

Unknown disse...

Parabéns amigos pela iniciativa do curso, está de primeira.

Unknown disse...

Gostaria de saber o que significa "void", pois não vi nenhum comentário sobre ela, obrigado

Lucas de Lima disse...

Muito bom!