Você está na página 1de 7

Captulo 2

Introduo Programao

OBJETIVOS DO CAPTULO Ao final deste captulo voc ser capaz de: Entender o processo de traduo de programas escritos em linguagem de alto nvel para cdigo de mquina. Compreender o conceito de varivel e sua relao com a memria do computador. Criar instrues que envolvam operaes aritmticas. Utilizar instrues de entrada e sada da linguagem C. Escrever um programa simples em C. Agora que voc j conhece as caractersticas de um algoritmo computacional e capaz de criar algoritmos utilizando suas diferentes formas de representao, est na hora de voc escrever seu primeiro programa. Porm, antes que isso ocorra, voc deve aprender alguns conceitos bsicos como o conceito de varivel e conhecer o processo de traduo de um programa escrito em linguagem de alto nvel (a linguagem C, por exemplo) para cdigo de mquina, ou seja, para a linguagem que o computador trabalha. Alm desses conceitos, este captulo tambm aborda a elaboraes de expresses aritmticas em C, bem como alguns de seus comandos bsicos.

2.1. Introduo
Voc viu no captulo anterior que existe uma linguagem que os computadores so capazes de compreender e que utilizada na elaborao de algoritmos para instru-los a executarem as mais diversas tarefas. Essa linguagem chamada de linguagem de programao e consiste no principal assunto deste captulo.

Assim como as linguagens naturais (portugus, ingls, espanhol, etc), as linguagens de programao tm o objetivo de prover um meio eficaz de comunicao. Elas so constitudas de um conjunto de palavras especiais (vocabulrio), que associadas a um conjunto de regras de utilizao, determinam como os algoritmos devem ser especificados para que possam ser corretamente decodificados pelo computador. As linguagens de programao diferem das naturais de vrias formas. Primeiramente, apesar de ser possvel de serem utilizadas como meio de comunicao entre pessoas, seu principal propsito possibilitar a comunicao entre uma pessoa e um computador. Alm disso, as linguagens naturais so mais tolerantes a erros. Um erro gramatical, por exemplo, no impossibilita uma conversa entre duas pessoas. J no caso das linguagens de programao, a simples omisso de um ponto e vrgula capaz at de impedir que a comunicao seja iniciada. O contedo da comunicao por meio de uma linguagem de programao tem um significado especial para a cincia da computao. Enquanto que nos expressamos nas linguagens naturais atravs de textos e da emisso de sons, nas linguagens de programao nos expressamos atravs de programas, que nada mais so do que algoritmos escritos em uma linguagem de programao. O estudo das tcnicas para elaborao de programas consiste em um dos pilares da cincia da computao, conferindo uma importncia particular disciplina de Introduo Programao. Antes que voc conhea as peculiaridades de uma linguagem de programao estruturada, como suas principais instrues e regras para a construo de um programa, estudaremos os paradigmas de programao existentes e o processo de traduo de um programa escrito em linguagem de alto nvel para um programa em cdigo de mquina.

2.2. Nveis das Linguagens de Programao


Os computadores representam as informaes atravs da manipulao de dois estados. Esse sistema de representao, denominado de sistema binrio, decorre do fato da grande maioria dos componentes eletrnicos poder assumir apenas dois valores. Por exemplo, uma lmpada pode estar no estado ligado ou desligado, um capacitor pode estar carregado ou descarregado e um circuito eltrico pode estar energizado ou no. A representao binria utiliza os algarismos 0 e 1, chamados de dgitos binrios. Eles so os valores que um bit (menor unidade de informao em um computador) pode assumir e esto associados aos valores de tenso presentes nos circuitos eltricos do

computador. Para representar o bit zero, por exemplo, normalmente utiliza-se um valor prximo a zero volts. Para o bit um, utiliza-se um valor um pouco maior, da ordem de poucos volts. Repare que trabalhar com uma combinao de zeros e uns no uma tarefa fcil para um ser humano. Para que voc perceba a dificuldade, imagine como seria escrever um pseudocdigo substituindo comandos como LEIA, ESCREVA e expresses aritmticas por uma combinao de zeros e uns. A Figura 2.1 ilustra tal situao, apresentando um algoritmo em pseudocdigo que calcula a mdia de duas notas lidas da entrada padro e sua verso hipottica em cdigo binrio.

O cdigo binrio apresentado na Figura 2.1 tem fins meramente didticos, no sendo elaborado com base em nenhuma mquina real.

Algoritmo em pseudocdigo
1. 2. 3. 4. 5. 6. 7. ALGORITMO DECLARE nota1, nota2, M : NUMRICO LEIA nota1 LEIA nota2 M (nota1 + nota2) / 2 FIM_ALGORITMO.

8.

Cdigo binrio hipottico


10100001 10100011 10010001 10010010 10010011 11000001 10100100 10010001 10100100 10010010 10010011 11110011 10010001 11110001 10010010 11110010 00000010 10100010
Figura 2.1. Ilustrao de um cdigo binrio hipottico referente a um algoritmo escrito em pseudocdigo.

Com o intuito de tornar menos complicada, mais eficiente e menos sujeita a erros a tarefa de programar computadores, foram criadas linguagens de programao mais prximas s linguagens naturais. Elas so compostas de um conjunto de palavras-chave, normalmente em ingls, e smbolos que estabelecem os comandos e instrues que podem ser utilizados pelo programador na construo de seus programas. As linguagens com essa caracterstica so chamadas de linguagens de alto nvel, ao passo que as mais prximas da linguagem de mquina (representao binria), so denominadas de linguagens de baixo nvel. So exemplos de linguagens de alto nvel: Pascal, C

(linguagem abordada neste livro), Java, C++ e Python. Como exemplo de linguagem de baixo nvel, temos a linguagem Assembly.

2.3. Tradutores e Interpretadores


Se por um lado as linguagens de programao facilitam o trabalho dos programadores, por outro impossibilitam que os programas desenvolvidos nessas linguagens sejam compreendidos pelos computadores, visto que eles so capazes de manipular apenas cdigos binrios. Dessa forma, os cientistas do passado se depararam com o seguinte desafio: como executar um programa em linguagem de programao, seja ela de baixo ou alto nvel, em um computador que trabalha apenas como nmeros binrios? primeira vista, o desafio em questo parece ser complexo demais para ser solucionado por um iniciante na cincia da computao. Todavia, voc vai perceber que a soluo para o problema est mais prxima da sua realidade do que imagina. Suponha que voc recebeu uma proposta milionria para trabalhar em uma empresa de desenvolvimento de software da China. Seus patres pagaro suas passagens, hospedagem, transporte e todo o aparato necessrio para que voc possa ter uma vida tranquila no pas asitico. Apesar de a proposta ser atraente, existe um problema: todos os funcionrios da empresa falam somente o chins, inclusive seus patres. Alm disso, o contrato a ser assinado tambm est escrito em chins. O que voc faria em tal situao? Recusaria a proposta? isso mesmo que voc est pensando, um tradutor seria a soluo para seus problemas. Do mesmo modo que voc precisaria de um tradutor para poder lidar com uma linguagem que no consegue entender, os computadores tambm necessitam de um tradutor para traduzir um programa escrito em linguagem de programao para um programa correspondente em linguagem de mquina. Dois softwares bsicos so responsveis por realizar a traduo em questo: os tradutores e os interpretadores. Os tradutores podem ser classificados montadores e compiladores. Quando o processo de traduo converte um programa que se encontra no nvel de linguagem de montagem (representao simblica da linguagem de mquina, ex.: linguagem Assembly) para a linguagem de mquina, o tradutor utilizado o montador. J na traduo de programas em linguagem de alto nvel para a linguagem de montagem, o software responsvel o compilador. Perceba que no h traduo direta da linguagem de alto nvel para a linguagem de mquina. Para que esta seja alcanada, so necessrios vrios passos intermedirios, sendo um deles a traduo para a linguagem de montagem.

No processo de compilao, cada parte de um programa (mdulo) escrito em linguagem de alto nvel traduzido para um mdulo objeto diferente, que consiste em sua representao em linguagem de montagem. Esse passo no processo de compilao corresponde ao passo 1 da Figura 2.2. Antes de serem traduzidos para linguagem de mquina pelo montador, necessrio que os vrios mdulos objetos sejam integrados de modo a formarem um nico cdigo. Essa tarefa realizado no passo 2. O passo 3 o responsvel por carregar o programa na memria, a fim de tornar suas instrues prontas para serem executadas pelo processador.

Procedimento Fonte 1 Procedimento Fonte 2 Procedimento Fonte 3

Mdulo Objeto 1 Mdulo Objeto 2 Mdulo Objeto 3

TRADUTOR

LIGADOR

Memria Principal

CARREGADOR

Programa Binrio Executvel

Figura 2.2. Passos no processo de compilao.

Os interpretadores, alm de realizar a traduo de um programa para a linguagem de mquina, ainda executam suas instrues. Assim que traduz uma instruo, ela imediatamente executada, gerando assim um ciclo de traduo e execuo que prossegue de instruo a instruo at o fim do programa (Figura 2.3).

Figura 2.3. Processo de Interpretao.

Por no traduzir um programa escrito em linguagem de alto nvel diretamente para linguagem de mquina, o processo de compilao tende a ser mais rpido que o processo de interpretao. Alm disso, uma vez compilado, um programa pode ser executado vrias vezes sem a necessidade de haver uma recompilao. J na interpretao, cada vez que um programa tiver que ser reexecutado, todo o processo de interpretao dever ser refeito, independente de ter ocorrido modificaes no cdigo fonte do programa desde sua ltima execuo. A vantagem da interpretao fica por conta da possibilidade de testar os programas ao mesmo tempo em que so desenvolvidos.

A linguagem utilizada neste livro (linguagem C) como ferramenta para inici-lo na programao de computadores uma linguagem compilada, portanto, os programas que voc ir desenvolver passaro pelos passos explanados anteriormente.

Para saber mais sobre o processo de montagem e compilao, leia a Seo 3 do Captulo 5 do Livro de Introduo ao Computador.

2.4. Paradigmas de Programao


Um paradigma de programao est relacionado com a forma de pensar do programador na construo de solues para os problemas com os quais se depara. Programar seguindo um determinado paradigma de programao significa representar solues a partir de uma forma particular de raciocinar na elaborao dos algoritmos. Como os paradigmas mencionados sustentam a atividade de programas, eles influenciam todo o processo de desenvolvimento de software. Alguns dos paradigmas de programao mais utilizados esto relacionados abaixo:

Paradigma imperativo: Representa a computao como aes, enunciados ou comandos que alteram o estado (variveis) de um programa. Consiste na elaborao de programa a partir de comandos que dizem o computador deve fazer a cada momento.

Paradigma estruturado: Soluciona problemas a partir de sua quebra em problemas menores, de mais fcil soluo, denominados de sub-rotinas ou subprogramas. Normalmente o trabalho de cada sub-rotina consiste em receber dados como entrada, processar esses dados e retornar o resultado do processamento para o mdulo de software que o executou. Este paradigma ainda defende que todo processamento pode ser realizado pelo uso de trs tipos de estruturas: sequencial, condicional e de repetio. o paradigma adotado neste livro.

Paradigma declarativo: Descreve as caractersticas da soluo desejada sem especificar como o algoritmo em si deve agir. Em contraste com o paradigma imperativo, que informa ao computador como as instrues devem ser executadas, o paradigma declarativo preocupa-se apenas em definir o que deve ser feito, deixando a cargo de outros softwares decidirem como alcanar a soluo descrita. bastante utilizado no desenvolvimento das pginas web (linguagem html) e na descrio de documentos multimdia atravs da linguagem Nested Context Language NCL, adotada pelo padro brasileiro de TV Digital.

Paradigma orientado a objetos: Enxerga o problema como uma coleo de objetos que se comunicam por meio da troca de mensagens. Os objetos so estruturas de dados que possuem estado (variveis) e comportamento (lgica).

Você também pode gostar