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.