My life in English

Aiming to be a Canadian citizen.

Vamos aprender a programar em C/C++? Lição 03: código-fonte, código objeto, compiladores, interpretadores e IDEs

Posted by fabianovasconcelos on 10 de April de 2009

Salve galerinha do país mais corrupto do mundo!

Aos que cairam do berço quando eram bebês e hoje têm déficit de atenção, notem que alguns termos são um link para páginas externas. Clique neles, se necessitar de alguma informação complementar a respeito.

Tá mais perdido que o Steve Wonder no escuro? Pois você veio parar num curso on line de C/C++! Clica aqui pra ver o índice!

Já adquiriram os seus ovinhos? Tão preparados pra dar os ovinhos pra quem você gosta no domingo?
Bem, hoje é dia de aprender o que fazer com os algorítmos que você escreve.
No último post de nossa saga, vimos que para programar você deve escrever uma lista de passos chamada de algorítmos. Estes algorítmos serão a base de seus programas.
Por exemplo: se você quer um programa editor de texto, então você terá que fazer um algorítmo que abra um arquivo, receba uma série de caracteres, seja capaz de salvá-lo em um arquivo, etc.
Mas, uma dúvida cruel deve ter pairado, nesse tempo todo, na sua linda cabecinha: como transformar aquela série de passos que você escreveu em um programa funcional? Ah! Agora é que vem o pulo do gato (ou será o do cururu?)! Não percam os próximos temas!

  • Sintaxe

Quando nós escrevemos um programa em uma determinada linguagem, seja ela qual for, C, C++, Pascal, Assembly, Java ou o que quer que seja, nós devemos escrevê-la de uma forma padronizada, no formato que a linguagem aceita. Por exemplo: em C e C++, a expressão “SE” é “if”. “ENQUANTO” é “while” e por aí vai. Tudo é determinado pelo implementador (o carinha que construiu) da linguagem. Então é pra isso que você estuda uma linguagem: para conhecer a sua sintaxe (que é o nome correto da coisa). Uma vez que você sabe programar em uma linguagem, para programar em outra, basta estudar a sintaxe da outra. Estruturar algorítmos você já sabe. Se você toca um instrumento, para tocar em outro, fica mais fácil (quem é músico sabe do que eu estou falando). Uma vez que você sabe dirigir um corsa, dirigir uma ferrari não é das tarefas mais difíceis, é um processo bem parecido. Se você usa linux, não é difícil usar windows e por aí vai.

  • Código-fonte

Pois bem. Terminei de escrever, na linguagem C ou C++, o meu código-fonte. E agora? Bom, e agora que esse algorítmo doravante será chamado de código-fonte! Os algorítmos que você escreveu num papel, ou num processador de texto, ou até mesmo na mente, você os traduziu do português para o C ou C++. Ele é o seu programa, mas ele está no idioma que você, ou qualquer outra pessoa, entende se ler direitinho. Veja bem: quando você escreve um código, ele não deixa de ser um algorítmo, mas agora ele não está mais em português claro, como no exemplo do post dos cururus. Agora ele está escrito de acordo com a sintaxe da linguagem que você está utilizando, no caso, estamos falando de C/C++. A esse algorítmo escrito em linguagem de programação é que damos o nome de código-fonte.
Mas aí tem um problema: o teu computador não entende o que você escreveu. Você é capaz de ler aquilo tudo (o código-fonte) e entender, mas o computador, não. E agora? Por enquanto, você vai salvar tudo aquilo em um arquivo de texto. Um arquivo de texto bem simples, que qualquer um pode abrir e ler. Então, temos que traduzir esse programa para uma linguagem que o computador entenda, porque na real, ele não entende C, C++, Pascal, Java, NADA! Ele só entende 0 e 1, e essa linguagem é chamada de Linguagem de máquina ou linguagem binária.

É a única linguagem que o computador consegue entender. É feita só de presença de pulsos elétricos e de ausência de pulsos elétricos.
Um arquivo em linguagem binária é, geralmente, um programa, um código-objeto. Um código que o computador conhece e compreende. Quando você clica naquele arquivo (não me refiro a um atalho) e ele abre um programa, simplesmente você clicou num arquivo binário. Aí você me fala: “Mas tudo bem. Já entendi o que é código-fonte e código-objeto. A parte que vai falar de como é que eu transformo o código-fonte em código-objeto não vai chegar não, é?”. E eu digo de cara: “Bem, vai chegar AGORA!”

  • Compiladores

Amigos, apresento-lhes o conceito de compilador!
Um compilador é o programa responsável por transformar o código-fonte em código-objeto (ou código-binário, programa, como queiram). Simplesmente o compilador pega o seu código-fonte, processa, e depois gera um arquivo objeto de mesmo nome do código-fonte, mas com extensão diferente (ou sem extensão, dependendo do compilador que você vai usar). Geralmente, os compiladores são em linha de comando, o que é super chato de gerenciar, haja visto que os compiladores em linha de comando exigem muitas flags, opções, parâmetros demais.
Mas, existem umas coisas muito legaizinhas pra ajudar a galera na tarefa usar um compilador: são as IDEs! IDE significa Interface Development Enviroment (Interface de Ambiente de Desenvolvimento – acertei na tradução?). Uma IDE simplesmente assume o comando do compilador, enquanto você, praticamente, só faz clicar teclar alguns botões! Como eu uso linux, eu uso compiladores e IDEs feitos para a plataforma linux. Um exemplo de boa IDE é o KDevelop, que eu adoro! É grátis e profissional. Mas existem muitas outras IDEs grátis, tanto pra window$ quanto pra linux. É claro que existem IDEs e compiladores pagos, mas ninguém é trouxa de pagar, sendo que você pode fazer programas profissionais sem ter que desembolsar uma fortuna. Mas esse assunto é outro, vamos voltar aos compiladores.
Um compilador e uma IDE são a dupla perfeita. Estudar o uso de um compilador puro é uma tarefa meio que desgastante, mas se alguém quiser se aventurar e desbravar esse território, seja feliz. É até aconselhável, porque você, como programador, com certeza um dia vai precisar usar um compilador puro, sem IDE. Mas de início não tem necessidade.
Veja bem: o compilador é o que faz o serviço de compilação, ou seja, transforma o código-fonte em código-objeto e a IDE é quem simplifica esse processo, uma vez que o compilador geralmente é em linha de comando (ou modo console) e a IDE é em modo gráfico, o que é mais amigável, e o primeiro controla a última.

  • Interpretadores

Que tal rodar o programa sem precisar compilar? É isso mesmo! Isso é possível (em alguns casos) graças ao interpretador. Simplesmente um interpretador pega o seu código-fonte, lê linha por linha e faz uma simulação do programa que seria gerado por ele, mas sem precisar compilar. Se o teu código-fonte não for muito grande, e se for pra gerar um programa em modo console, aí o interpretador roda bem direitinho. A desvantagem é que ele roda lento, deixa o teu código a mostra e nem todo código pode ser interpretado, dependendo da complexidade. Eu não vou falar muito sobre interpretador, até porque, hoje  em dia ele quase não é usado. Mas, existem ainda linguagens exclusivamente interpretadas, como, BASIC, Bash, Perl, PHP, Python, Euphoria, Forth, JavaScript, Logo, Lisp, Lua, MUMPS, Ruby, Haskell, etc.

Ainda não entendeu? Não se sinta um tapado! Eu vou resumir pra você agora:

1. Não confundir algorítmo, código-fonte e código-objeto. Algorítmo é uma sequência de passos, como você faria na sua agenda;
2. Código-fonte, é a sua sequência de passos escrita em uma linguagem que você ainda pode entender, mas que usa a sintaxe padrão da linguagem de programação que você escolheu (no caso, C/C++);
3. Código-objeto é o seu código-fonte, traduzido para uma linguagem que o computador pode entender. O código-objeto geralmente é um programa;
4. Compilador é o programa aplicativo usado para transformar o seu código-fonte, QUE DE AGORA EM DIANTE VAMOS CHAMAR SOMENTE DE CÓDIGO, em um código-objeto, QUE DE AGORA EM DIANTE VAMOS CHAMAR SOMENTE DE PROGRAMA OU DE BINÁRIO;
5. Interpretador é uma ferramenta que permite fazer um programa rodar, sem compilá-lo.

Bom galerinha, só espero que vocês tenham entendido e não tenha restado nenhuma dúvida. Mesmo assim, se existirem dúvidas, pelo amor de Deus, eu imploro pelo pão de coco da semana santa, que vocês não deixem de postar a dúvida aqui!
No próximo post (sabe Deus quando será), vamos falar do tema: “Por que C e C++?”.

Boa páscoa pra todos e não exagerem no chocolate. Pode te dar caganeira.

Links úteis:

  • Compiladores GRÁTIS (linux e windows)

GCC | Mingw | Diversos (tanto para C/C++, quanto para outras linguagens)

  • IDEs GRÁTIS (linux e windows)

Kdevelop | NetBeans | Qt Creator | Code::Blocks | Eclipse


“Homem é que nem geladeira: bota a carne dentro e deixa os ovos de fora” – Rossicléia (Humorista)

“Mulher é que nem piscina: um investimento muito alto pro pouco tempo que você passa dentro!” – Santos (Humorista)


Copyright 2009 (C) Fabiano Bezerra de Vasconcelos – Todos os direitos reservados.

Advertisements

10 Responses to “Vamos aprender a programar em C/C++? Lição 03: código-fonte, código objeto, compiladores, interpretadores e IDEs”

  1. […] uma fortuna. Mas esse assunto é outro, vamos voltar aos compiladores. … fique por dentro clique aqui. Fonte: […]

  2. fabio said

    voce pode explicar como funciona o processo de ligação com a biblioteca padrão do C e sobre as funções ANSI ?

    • fabianovasconcelos said

      Cara, em primeiro lugar, desculpe a demora em responder, mas é que o meu notebook essa semana resolveu papocar e foi pra assistência técnica.
      Em segundo lugar, você poderia ser mais claro na pergunta? É que tá meio vaga. Desculpa aí a falta de entendimento da minha parte. Seja mais claro, por favor. 🙂

      Grande abraço! 😀

      • fabio said

        Pra explicar como funciona a compilação e ligação dos arquivos, desde o codigo fonte (*.c,*.cpp …) ate chegar no (*.exe ou *.dll isso no windows é claro) mostrar a diferença do desenvolvimento em diferentes plataformas assim como codigos que funcionam em diferentes sistemas. Sei que ia acabar dando outro texto, mas é possivel fazer isso ?

        OBRIGADO

        Abraços

      • fabianovasconcelos said

        Bom, em primeiro lugar, me desculpe a demora em responder. É que o meu notebook foi pro conserto e até chegar da assistência técnica eu terei de usar os computadores dos outros. Agora, por exemplo, eu estou usando o computador do trabalho.
        Bem, quanto a sua demanda, seria exatamente este o tema do próximo tópico. Mas eu estou encontrando dificuldades pra implementar! 😦
        Assim que eu tiver uma oportunidade eu vou enfiar a cara num PC e fazê-lo. Acho que vai demorar um pouco, haja vista que eu gosto de fazer um texto bem feito, depurá-lo, alisá-lo, penteá-lo, lustrá-lo e só depois colocá-lo no ar. Afinal, tem que ser pra arrasar. Eu espero que você compreenda. De qualquer maneira eu vou ter o maior prazer em ajudar.

        Grande abraço.

    • fabianovasconcelos said

      Fábio,

      Cara, mais uma vez eu tô aqui pra te dar uma satisfação. Acredite: o tempo tá foda!!! Mas eu não me esqueço um só dia do teu pedido. Aliás, eu devo já estar em 65% do post pronto, mas não vou soltá-lo assim, sem dar uma boa revisada. Afinal, eu não quero correr o risco de falar besteira. Quero por tudo lá bem certinho, com linguagem bem simplificada, sem erros e sem esquecer de dizer nada. Talvez o artigo nem sirva mais pra você, porque já deu tempo de sobra pra você procurar em outras fontes a resposta pra tua dúvida. Mas certamente será de alguma valia pros que chegarem depois. Mais uma vez, me desculpe. Não foi má vontade. Eu realmente não pude atender a tempo.

      Grande abraço e continue vendo o meu blog! 😉

      • fabianovasconcelos said

        Fala, amigo Fabio!!!

        Finalmente eu terminei o seu artigo. Tá revisadinho, bonitinho. Mas eu acho que numa hora dessas nem deve mais servir pra você. Você deve ter achado as informações em outro lugar. 😦 Mas se você não pegou as informações em outras fontes, vê lá e me retorna. DIz o que tu achou.
        Não esquece de divulgar o blog e continuar visitando!
        Um grande abraço!!!

        Fabiano Vasconcelos

    • fabianovasconcelos said

      Fala, amigo Fabio!!!

      Finalmente eu terminei o seu artigo. Tá revisadinho, bonitinho. Mas eu acho que numa hora dessas nem deve mais servir pra você. Você deve ter achado as informações em outro lugar. 😦 Mas se você não pegou as informações em outras fontes, vê lá e me retorna. DIz o que tu achou.
      Não esquece de divulgar o blog e continuar visitando!
      Um grande abraço!!!

      Fabiano Vasconcelos

  3. allan said

    muits bons

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

 
%d bloggers like this: