Um programador escreve um
programa em geral para dar uma solução para um problema. Nesta disciplina
nossos primeiros problemas serão bem simples e pouco ambiciosos. Por exemplo
escrever na tela do computador um número.Eventualmente ficaremos mais
ambiciosos.
Um programador escreve um
programa (um arquivo do tipo texto) se expressando via utilização de uma
linguagem de alto nível, por exemplo C, C++, Java etc As sentenças de um
programa são lidas por um programa chamado "compilador". O compilador
interpreta as sentenças produzindo código em linguagem de montagem ou linguagem
de máquina. Observe o exemplo
Uma sentença do tipo
A=B*(C+D);
não corresponde a 1 (uma)
única instrução do Computador Simplificado. Uma possível interpretação seria
considerarmos que o nome A corresponde a posição de memória E15, B corresponde
a posição E14, C->E13 e D->E12. Considere que os valores de E12, E13, E14
e E15 estão ajustados. Uma possível interpretação é
some E13 e E12 e guarde em
E11
multiplique E14 e E11 e guarde em E15
A sentença em linguagem de
alto nível foi interpretada na forma de duas instruções que usam, além das 4
posições de memória convencionadas, a posição (E11) como posição auxiliar. A
sentença também poderia ser compilada diretamente para linguagem de máquina:
000110111001011
010111010111111
Muitos conceitos estão
envolvidos neste processo, dentre eles o conceito de variável, atribuição e
expressão, que serão os primeiros conceitos explorados no aprendizado de
programação.
A figura abaixo mostra alguns
dos passos necessários para um desenvolvedor produzir um programa utilizando
uma linguagem de alto nível:

O primeiro passo é a edição
do programa. O desenvolvedor utiliza um editor de textos para criar um arquivo
contendo o chamado código fonte ou código em alto nível. Após a criação do
arquivo contendo o código fonte o desenvolvedor deve utilizar um compilador. O
compilador traduz ou compila o programa de linguagem de alto nível para
linguagem de montagem. O compilador cria um arquivo contendo código em
linguagem de montagem. Após a compilação o desenvolvedor deve utilizar um
montador. O montador traduz ou monta o programa de linguagem de montagem para
linguagem de máquina. Na figura acima omitimos um passo denominado
(ligação-edição!) O programa em linguagem de máquina pode ser carregado na
memória do computador e executado. Em alguns sistemas de computação o
compilador faz a tradução direta da linguagem de alto-nível para linguagem de
máquina. Nesta figura estamos fazendo várias simplificações por motivos
didáticos, em particular não mostramos aspectos de edição de ligações (“link
editing”), biblioteca de código e código de tempo de execução (“run-time code).
Nesta disciplina, DCC003,
recomendamos o uso dos compiladores GNU (C e C++), especificamente para a
plataforma Windows recomendamos o uso da AID (IDE integrated Development
Environment) DEV-C++:
http://www.bloodshed.net/dev/devcpp.html
Mas já tivemo o relato de
alunos que usaram para esta plataforma o compilador C (Express – gratuito) da
Microsoft sem grandes problemas. Temos também o relato de alunos que usaram a
AID Code::Blocks (www.codeblocks.org) tão
bem ou melhor que o DEV-C++
Em um ambiente “integrado”
o AID torna “transparente” muitas das atividades que necessitam ser feitas para
poder desenvolver um programa!
Um AID (IDE) em geral
incorpora um editor, um compilador, um interpretador além de outras ferramentas
de grande utilidade tal como o "depurador". Os programas podem conter
além de erros sintáticos, que são capturados pelo compilador, os denominados
erros semânticos. O compilador normalmente não gera código para programas com
erros sintáticos, mas o compilador pode gerar código para programas com erros
semânticos. Um exemplo bem simples de erro semântico é existir uma
*especificação* de que deve ser escrito um programa que deve somar dois valores
e ao invés disso, por algum motivo, o programa é escrito implementando uma
outra operação (por exemplo subtração ou multiplicação) dos valores. O
resultado gerado pelo programa provavelmente estará errado e existem
ferramentas que auxiliam na tarefa de descobrir o que foi feito de errado e em que
parte do programa. Este tipo de ferramenta é denominada ferramenta de depuração
(debugger).
Um aspecto inseparável da
atividade de concepção e implementação de programas é a ocorrência de ERROS.
Como descobrir falhas na execução dos programas e descobrir quais foram os
defeitos que originaram estas falhas é um assunto que será discutido de forma
bem simples nesta disciplina. Descobrir defeitos a partir do texto do programas
é normalmente denominado de Inspeção, descobrir falhas na execução dos programas
é normalmente denominado Teste e descobrir os defeitos que deram origem a
falhas denomina-se Depuração (Debugging).
A Figura abaixo mostra de
maneira sintética um aspecto avançado da produção de software. Este tipo de
programação não será abordado nesta disciplina.
