1.1 Os Elementos da Programação
Uma linguagem poderosa de programação é mais do que apenas um meio para instruir o computador a realizar tarefas. A linguagem também serve como um framework no qual nós podemos organizar nossas ideias sobre processos. Assim, quando nós descrevemos uma linguagem, devemos ter atenção particular para as formas que a linguagem provê para combinar ideias simples para formar ideias mais complexas. Toda linguagem poderosa possui três mecanismos para atingir isto:
- expressões primitivas, as quais representam as entidades mais simples que a linguagem está interessada,
- meios de combinação, pelas quais elementos compostos são construídos de outros mais simples, e
- meios de abstração, pelos quais elementos compostos podem ser nomeados e manipulados como unidades.
Em programação, nós lidamos com dois tipos de elementos: procedimentos e dados. (Mais tarde iremos descobrir que não são exatamente tão distintos). Informalmente, dados são “coisas” que queremos manipular e procedimentos são descrições das regras para manipular os dados. Assim, toda linguagem de programação poderosa deve ser capaz de descrever dados primitivos e procedimentos primitivos e deve ter métodos de combinar e abstrair procedimentos e dados.
Neste capítulo nós iremos lidar apenas com dados numéricos simples para que possamos nos focar nas regras para construir funções[1]. Em capítulos posteriores nós iremos ver que estas mesmas regras possibilitam da mesma forma, criar e manipular dados compostos.
[1] A caracterização de números como "dados simples" é um blefe. Na verdade, o tratamento de números é um dos mais difíceis e confusos aspectos de qualquer linguagem de programação. Algumas questões comuns envolvidas são: Alguns sistemas de computadores distinguem inteiros, como 2, de números reais, como 2.71. O número real 2.00 é diferente do inteiro 2? As operações aritméticas usadas para inteiros são as mesmas utilizadas para números reais? 6 divido por 2 produz 3 ou 3.0? Como um grande número pode ser representado? Quantas casas decimais corretas somos capazes de representar? O conjunto de números inteiros é o mesmo dos números reais? Para além destas questões, é claro, se encontra uma coleção de questões envolvendo arredondamento e erros de truncagem — toda a ciência da análise numérica. Uma vez que nosso foco nesse livro é no design de programas de maneira geral ao invés de técnicas numéricas, nós iremos ignorar esses problemas. Os exemplos numéricos neste capítulo vão exibir o comportamento normal de arredondamento que se observa quando se usam operações aritméticas que preservam um número limitado de casas decimais de precisão em operações de não-inteiros.