Você está na página 1de 8

Algoritmos e a Linguagem

Procedural

Caro(a) aluno(a),
Com este capítulo, damos início ao nosso curso. Nele, você vai apren-
der os conceitos que envolvem algoritmos e linguagem procedural,
como a linguagem C. Nele, veremos as diferenças entre as linguagens
compiladas e as interpretadas. Ao final do capítulo, você será capaz
de identificar com clareza o que é compilação e interpretação.
Desejo-lhe um ótimo curso! Vamos iniciar nossa caminhada?

Algoritmos são formados por instruções escritas com a finalidade de


solucionar um problema. Geralmente, a execução destas instruções é
feita de forma sequencial (uma após a outra), respeitando a ordem em
que as instruções foram criadas. É possível também modularizar (criar
procedimentos e funções) o algoritmo, permitindo uma melhor organi-
zação e reutilização do código. Várias linguagens de programação são
desenvolvidas para permitir a criação de programas modulares e de ex-
ecução sequencial. A linguagem C é uma destas linguagens.

C é uma linguagem de programação altamente modular, ou seja,


tudo deve ser pensado como função! Logo, se o programador cria
um programa em C, pelo menos uma função vai fazer parte do
código-fonte. Esta função se chama main(), que é a função princi-
pal de qualquer programa escrito em C.

Os conceitos aprendidos na disciplina de Lógica de Programação serão


de grande importância neste curso, pois você aprenderá a implemen-
tar os conceitos de programação numa linguagem muito poderosa e
flexível.

Ao final do curso, será possível compreender todos os conceitos mais


usuais de C, possibilitando a criação de programas estáveis e eficientes.
Além disso, o estudo de C dá suporte para a aprendizagem de outras
linguagens de programação, como C++, Java, PHP, dentre outras. Afi-
nal, C serviu de inspiração para o surgimento de várias linguagens de
programação.
12
Capítulo 1

1.1 – Compilador

Quando temos um programa escrito em C salvo num arquivo de texto,


é preciso realizar três operações preparatórias para executá-lo: compi-
lação, ligação e execução.

A compilação é realizada por um compilador, um programa com ca-


pacidades de processamento de texto. Este sim, “conhece” tudo o que
é preciso acerca desse código interno e acerca da linguagem de pro-
gramação utilizada, em nosso caso, a linguagem C.

A compilação consiste na tradução do texto em C para um código


compatível com a constituição eletrônica da máquina, constitui-
ção essa que nós normalmente não conhecemos, nem queremos
conhecer.

A compilação só é possível se o texto for mesmo um programa C, isto é,


se estiver escrito de acordo com todas as regras da linguagem (sintaxe).
Se não, será apenas um programa C com erros. Depois de criar o códi-
go-fonte, o programador aciona o compilador e essa ação desencadeia
a sequência de etapas necessárias para a criação do executável, como
apresentado na Figura 1.

As regras das linguagens de programação são muito precisas.


Logo, um ponto-e-vírgula que falta, um parêntese a mais, uma
palavra mal digitada, são exemplos de erros comuns no progra-
mador iniciante. Esses tipos de erro não são graves, pois o compi-
lador nos avisa quando são encontrados. Aliás, ele é melhor para
detectá-los do que nós.

O compilador assinalará cada violação das regras da linguagem, indi-


cando o lugar em que isso ocorre e também a natureza do erro, por
meio de uma mensagem explicativa. O compilador conhece as regras
da linguagem, mas ele é desenvolvido para encontrar erros de sintaxe.
Existem erros que ele não pode detectar. Por exemplo, se uma instrução
é digitada da seguinte maneira:

Licenciatura em Informática
13
Algoritmos e a Linguagem Procedural

if (x > 0)

Fatorial = 1;

(com o sinal de maior, ao invés do igual “=”), o programa fica perfeito


para o compilador, mas não calcularia fatoriais como nós queríamos.
Afinal, o resultado seria sempre 1 para qualquer valor positivo infor-
mado pelo usuário.

Edição
(módulo fonte em C)

Pré-Processamento
(novo fonte expandido)

Compilação
(arquivo objeto)

Lincagem
(executável)

Execução

Figura 1: Compilação na linguagem C

Continuando a falar do compilador, a Figura 2 apresenta um trecho de


código para apresentar na tela do computador a mensagem

Apenas mais um OLA MUNDO? :)

Linguagem de Programação I
14
Capítulo 1

Figura 2: Estrutura de um programa em C

As duas primeiras linhas do código são:

#include<stdio.h>

#include<stdlib.h>

Para mais informações sobre as bibliotecas mais usuais de C, leia


o Apêndice 1 da nossa apostila.

Elas são diretivas do pré-processador, ou seja, indicam que será neces-


sário incluir os arquivos stdio.h e stdlib.h ao código fonte. Mas por que
isso é necessário? Porque no arquivo de cabeçalho stdio.h, estão as fun-
ções referentes à entrada e saída de dados padrão (teclado e monitor):
std(Standard) + io(Input/Output).

Desta forma, o conteúdo deste arquivo foi integrado ao código-fonte


apresentado na Figura 2. E, naturalmente, a função printf() está descrita
em stdio.h e tem como função imprimir na tela do monitor o que está
entre as aspas duplas.

Como o compilador usado neste curso é o Dev-C++, é possível ter


acesso aos arquivos cabeçalho, por meio do caminho
C:\Dev-Cpp\include\ .

O resultado de uma compilação com êxito é chamado programa-ob-


jeto. Ao programa original, para distinguir, chama-se por vezes pro-
grama-fonte. O programa-objeto vai residir na memória secundária,
num arquivo. Apesar de os nomes dos arquivos serem completamente
arbitrários, normalmente segue-se uma disciplina bastante rígida na
atribuição de nomes aos diversos arquivos envolvidos na construção de

Licenciatura em Informática
15
Algoritmos e a Linguagem Procedural

um programa C. Inicialmente, é necessário associar nomes coerentes


aos programas-fonte em C, seguidos por uma extensão convencional,
por exemplo “.c” ou “.cpp”. Assim, um bom nome para o arquivo do
programa sobre fatoriais seria “fatoriais.cpp”. Depois, deixa-se ao com-
pilador o cuidado de escolher o nome do programa-objeto. Habitual-
mente, o compilador muda apenas a extensão, o que permite relacionar
facilmente os arquivos associados a certo programa. De acordo com
isto, o arquivo do programa-objeto chamaria “fatoriais.obj”. As exten-
sões realmente usadas dependem do compilador e do ambiente de pro-
gramação utilizado.

A ligação ou linkedição é uma operação um tanto misteriosa, realizada


por um programa chamado ligador (linker, em inglês), que pega o pro-
grama-objeto produzido pelo compilador e o liga a outros programas-
objeto pré-existentes, indispensáveis para que o programa fique com-
pleto e autônomo, do ponto de vista do hardware.

O resultado da ligação é o programa-executável, formado por códi-


go capaz de ativar diretamente os circuitos da máquina, pronto a ser
executado. Tal como o programa-fonte e o programa-objeto, o progra-
ma-executável vai residir num arquivo. Se não houver indicação em
contrário, o ligador dá-lhe um nome, mudando novamente apenas a
extensão. Em nosso caso, poderia ser “fatoriais.exe”, por exemplo.

A linkedição agrupa o código-objeto gerado a partir de nosso có-


digo-fonte e bibliotecas da linguagem com as quais trabalhamos,
gerando o que chamamos de arquivo executável.

Nota-se que, uma vez obtido o programa-executável, o programa-objeto


deixa de fazer falta e pode ser apagado do disco. É conveniente manter
o programa-fonte, mesmo quando o executável fica pronto, pois mais
cedo ou mais tarde vamos precisar dele de novo para lhe fazer algumas
modificações, para recordarmos como resolvemos certo problema que
surgiu ou para copiar algumas partes do programa sobre o qual estamos
trabalhando no momento.

C, C++, Pascal, Delphi, Cobol, Fortran, Visual Basic e Visual Fox-


Pro, são exemplos de linguagens compiladas.

Linguagem de Programação I
16
Capítulo 1

Alguns compiladores fornecem ambientes de programação integrados,


a chamada IDE (Integrated Development Enviroment). O Dev-C++ é um
exemplo deste tipo de ambiente e será a nossa ferramenta de programa-
ção em C durante nosso curso. Mas é possível usar um editor separa-
do para criar seu código-fonte e, posteriormente, efetuar a compilação
via terminal, como ocorre nas distribuições Linux. É possível criar o
código-fonte em editores como o VIM, um dos editores de texto encon-
trados no Linux, e depois compilar usando o GCC (compilador C en-
contrado nas distribuições Linux). A Figura 3 apresenta a tela principal
do Dev-C++.

Figura 3: Ambiente do Dev-C++

1.2 – Interpretador

As linguagens interpretadas precisam executar o interpretador, carregar


o programa e atualizar o navegador cada vez que for necessário usá-lo.
O interpretador examina seu programa uma linha por vez para correção
e, então, o executa. Esse processo lento ocorre cada vez que o programa
for executado. Dessa forma, o código interpretado para ser executado,
repete todo o processo de interpretação.

O interpretador lê o código-fonte do programa no momento da


execução, traduz a instrução e a executa logo depois. Se o inter-
pretador é usado, ele deve estar presente para que o programa seja
executado.

Licenciatura em Informática
17
Algoritmos e a Linguagem Procedural

A Figura 4 demonstra, esquematicamente, como ocorre o processo de


interpretação.

Programa Fonte Dados

Interpretador

Saída
(Programa Interpretado)

Figura 4: Processo de interpretação

ActionScript, ASP, C#, Java, JavaScript, PHP, Python e Ruby são


exemplos de linguagens interpretadas.

Atividades:
1) Defina cada um dos termos relacionados a seguir:
Código-Fonte:
Código-Objeto:
Ligador ou Linkeditor:
Programa Executável:
Tempo de Compilação:
Tempo de Execução:
Interpretador:

Linguagem de Programação I
18
Capítulo 1

Licenciatura em Informática

Você também pode gostar