Vous êtes sur la page 1sur 9

Captulo 4

Linguagens de Programao
4.0 ndice Captulo 4
4.0 4.1 ndice Programao de Computadores 1 1 2 2 2 3 3 5 6 6 6 7 7 7 8

4.2 Nveis de Linguagens de Programao 4.2.1 Linguagem de Mquina 4.2.2 Linguagem Hexadecimal 4.2.3 Linguagem Assembly 4.2.4 Linguagem de Alto Nvel 4.2.5 Linguagens estruturadas 4.3 Desenvolvimento de Programas 4.3.1 Gerao do cdigo fonte (codificao) 4.3.2 Traduo do Cdigo Fonte (cdigo objeto) 4.3.3 Editores de ligao 4.3.4 Depuradores ou debuggers 4.4 Execuo de Programas

Captulo Captulo 4: 4: Linguagens de Programao

Prof. Roberto Willrich

4.1 Programao de Computadores


Embora o equipamento bsico para a realizao das tarefas associadas Cincia da Computao seja, evidentemente, o computador, ns utilizaremos, ao longo deste curso, o conceito de Sistema Computacional , pelo seu significado mais abrangente, tanto quanto ao tipo de hardware envolvido quanto pela sua extenso aos demais componentes envolvidos nas atividades computacionais, particularmente os programas, mtodos, regras e documentao. Um Sistema Computacional pode ser visto como uma associao entre dois conceitos cada vez mais utilizados na terminologia de informtica:
n

o hardware, que est associado parte fsica do sistema (os circuitos e dispositivos) que suporta o processamento da informao; n o software, que corresponde ao conjunto de programas responsveis pela pilotagem do sistema para a execuo das tarefas consideradas. No que diz respeito a este segund o conceito, pode -se estabelecer uma classificao segundo o tipo de servio realizado pelo software. Assim, tm -se as seguintes definies:
n

software de sistema (ou sistema operacional) capaz de oferecer ao usurio, ou a outros softwares, facilidades de acesso aos recursos do computador, seja atravs de comandos, seja atravs de servios especiais ativados a nvel de um programa. O sistema operacional administra os arquivos, controla perifricos e executa utilitrios. n software utilitrio, que so programas desenvolvidos por especialistas ou mesmo por usurios experimentados e que tem por objetivo facilitar a realizao de determinadas atividades correntes no uso dos computadores (deteco e eliminao de vrus, programas de comunicao em redes de computadores, compresso de arquivos, etc...); n software aplicativo , que so os programas desenvolvidos ou adquiridos pelos usurios para algum fim especfico, seja ele de natureza profissional, educacional ou mesmo de lazer (jogos).

4.2 Nveis de Linguagens de Programao


Informalmente, uma linguagem de programao pode ser definida como sendo um conjunt o limitado de instrues (vocabulrio), associado a um conjunto de regras (sintaxe) que define como as instrues podem ser associadas, ou seja, como se pode compor os programas para a resoluo de um determinado problema. Ao longo dos anos, uma grande quantidade de linguagens de programao foi desenvolvida (e continua sendo) , algumas de uso mais geral e outras concebidas para reas de aplicao especficas. As linguagens de programao podem ser classificadas em nveis de linguagens, sendo que as linguagens de nvel mais baixo so mais prximas da linguagem interpretada pelo processador e mais distante das linguagens naturais.

4.2.1 Linguagem de Mquina


Lembrando que o computador corresponde basicamente a um conjunto de circuitos, a sua operao controlada atravs de programas escritos numa forma bastante primitiva, baseada no sistema binrio de numerao. O sistema binrio usado tanto para a representao dos dados quanto das operaes (instrues). A esta forma de representao dos programas, dado o nome de linguage m de mquina , em razo de ser a forma compreendida e executada pelo hardware do sistema.

Captulo Captulo 4: 4: Linguagens de Programao

Prof. Roberto Willrich

As instrues de linguagem de mquina so representadas por cdigos que correspondem a nmeros binrios cuja extenso pode variar de 8 a 64 bits (Figura 1). Dependendo da operao considerada, o cdigo de uma instruo pode simbolizar a operao a ser executada e os dados envolvidos na operao.

1 0 1 0

0 0 0 0

0 1 0 0

1 0 0 1

1 1 0 0

0 0 1 1

1 1 0 1

0 1 1 0

1 0 1 0

1 0 0 1

0 1 1 1

0 0 0 1

1 1 0 0

0 1 1 0

1 0 1 1

0 0 1 0

Figura 1. Ilustrao de um programa em linguagem de mquina Por uma questo de custo d e hardware, as operaes representadas pelas instrues de linguagem de mquina so bastante elementares, como por exemplo, a transferncia de dados entre memria e registro da CPU, a adio de dois valores, o teste de igualdade entre dois valores, etc... A linguagem de mquina impraticvel para escrita ou leitura. invivel escrever ou ler um programa codificado na forma de uma string de bits.

4.2.2 Linguagem Hexadecimal


Para simplificar a compreenso e a programao de computadores, num primeiro tempo foi adotado a notao hexadecimal para representar programas em linguagem de mquina, onde a seqncia de bits representada por nmeros hexadecimais, conforme ilustrado na Figura 2. 11 1A FB AB 7F 43 27 5B 6C D5 6F 99 FF 10 39 03 30 39 73 63 F4 3A B4 74 84 AB 7D 6B 84 47 F3 37 84 50 83 BC 5F 6C 10 39 85 85 84 03 83 03 83 78 5F FF FF 00 00 00 00 00 Figura 2. Ilustrao de um programa em linguagem hexadecimal 11 54 94 00 20 35 47 74

A linguagem hexadecimal portanto apenas uma simplificao de notao da linguagem de mquina. Apesar disto, a programao e leitura usando a linguagem hexadecimal continua impraticvel.

4.2.3 Linguagem Assembly


Embora seja a linguagem diretamente executvel pelos processadores, a programao de aplicaes diretamente em linguagem de mquina impraticvel, mesmo representada na notao hexadecimal. Por es ta razo, a linguagem de mquina de cada processador acompanhada de uma verso legvel da linguagem de mquina que a chamada linguagem simblica Assembly. Simblica pois esta linguagem no composta de nmeros binrios ou hexadecimais como nas duas linguagens anteriores. A linguagem Assembly na realidade uma verso legvel da linguagem de mquina. Ela utiliza palavras abreviadas, chamadas de mnemnicos , indicando a operao a ser realizada pelo processador. Abaixo so apresentados dois exemplos de instrues Assembly:
n

MOV R1, R2 nesta instruo identifica-se o mnemnico MOV (abreviao de MOVE) e dois registradores como parmetros: R1 e R2. Quando o processador executa esta instruo, ele comanda o movimento do contedo de R2 para R1 (equivalente a instruo Pascal R1:=R2, sendo R1 e R2 equivalente a duas variveis); n ADD R1, R2 nesta instruo identifica-se o mnemnico ADD (abreviao de ADDITION) e dois registradores como parmetros: R1 e R2. Quando o processador executa esta instruo, ele comanda a adio do contedo de R1 a o contedo de R2 e o resultado armazenado em R1 (equivalente a instruo Pascal R1:=R1+R2). Escolhendo nomes descritivos para as variveis do programa, e usando mnemnicos para representar cdigos de operao, a linguagem assembly facilitou significativame nte

Captulo Captulo 4: 4: Linguagens de Programao

Prof. Roberto Willrich

a leitura de seqncias de instruo de mquina. Como exemplo, supomos a operao de dois nmeros inteiros: A:=B+C. Esta operao, em um PC, em notao hexadecimal ficaria: A1000203060202A30402. Se associarmos o nome B posio de memria 200h, C posio 202h e A posio 204 h, usando a tcnica mnemnica, a mesma rotina poder ser expressa da seguinte forma:
MOV AX,B ADD AX,C MOV A,AX ; registro AX recebe o valor de memria contida na varivel B ; AX recebe a soma de AX (valor de B) com o valor de C ; varivel A recebe valor de AX

A maioria concorda que a segunda forma, embora ainda incompleta, melhor que a primeira para representar a rotina. Apesar de oferecer uma representao mais prxima do que o programador est acostumado a manipular, a linguagem Assembly apresenta certas dificuldades para a realizao dos programas, tais como a necessidade de definio de um conjunto relativamente grande de instrues para a realizao de tarefas que seriam relativamente simples (se representadas atravs de outras linguagens) e a exigncia do conhecimento de detalhes do hardware do sistema (arquitetura interna do processador, endereos e modos de operao de dispositivos de hardware, etc...). Por outro lado, a utilizao da linguagem Assembly proporciona um maior controle sobre os recursos do computador, permitindo tambm se obter bons resultados em termos de otimizao de cdigo. Como a linguagem Assembly apenas uma verso legvel da linguagem de mquina, a passagem de um programa escrito em Assembly para a linguagem de mquina quase sempre direta, no envolvendo muito processamento. Esta passagem de um programa Assembly para linguagem de mquina chamada de Montagem, e o programa que realiza esta operao chamado de montador ( Assembler ). A linguagem Assembly orientada para mquina (ou melhor, para processador), necessrio conhecer a estrutura do processador para poder programar em Assembly. A linguagem Assembly utiliza instrues de baixo nvel que operam com registros e memrias diretamente. Assim ela muito orientada s instrues que so diretamente executadas pelo processador. Na seqncia da evoluo das linguagens de programao, procurou-se aproximar mais a linguagem de programao linguagem natural que utilizamos no dia-a-dia: surgiram ento as linguagens de alto nvel, tipo Pascal, C, C++, etc.

Vantagens e Desvantagens da Linguagem Assembly


Mas se ns temos as linguagens de alto nvel para qu precisamos utilizar a linguagem Assembly? Para responder esta pergunta necessrio conhecer as vantagens e desvantagens da linguagem Assembly e a sua utilizao. Desvantagens com relao as linguagens de alto nvel:
n

A linguagem Assembly apresenta um nmero muito reduzido de instrues, do tipo operaes de movimentao de dados em memria, para registros e para memrias, e operaes lgicas e aritmticas bem simples. Estas instrues so de baixa expressividade, isto , elas so de baixo nvel. O programador deve programar num nvel de detalhamento muito maior para fazer a mesma coisa que em um programa escrito em linguagem de alto nvel. n Como o programador utiliza diretamente os recursos do processador e memria, ele deve conhecer, e muito bem , a mquina onde ele est programando.
n

Um programa escrito em linguagem Assembly no muito legvel, por isso ele deve ser muito bem documentado. n Um programa Assembly no muito portvel (pode ser usado apenas em um tipo de computador). Ela portvel apenas dentro de uma famlia de processadores. Por exemplo, diferente de um programa C, ele no pode ser executad o em PCs e estaes de trabalho .
n

Devido a sua baixa expressividade, ilegibilidade e exigncia do conhecimento sobre a mquina faz a programao Assembly ter um custo de desenvolvimento

Captulo Captulo 4: 4: Linguagens de Programao

Prof. Roberto Willrich

maior, requerendo um maior nmero de homens/hora comparado com a programao utilizando linguagens de alto nvel. Apesar das desvantagens acima citadas, a utilizao da linguagem Assembly tem algumas vantagens que so listados abaixo:
n

Ela permite o acesso direto ao programa de mquina. Utilizando uma linguagem de alto nvel, no se tem o controle do cdigo de mquina gerado p elo compilador (alguns compiladores permitem a otimizao de tamanho e de velocidade do programa). Devido a este acesso, o programador pode gerar um programa mais compacto e eficiente que o cdigo gerado pelo compilador. Um programa escrito em linguagem Assembly pode ser 0 ou 300 % menor e mais rpido que um programa compilado. n Alm disso, esta linguagem permite o controle total do hardware, por exemplo, permitindo a programao de portas serial e paralela de um PC.

Aplicaes da Linguagem Assembly


A linguagem Assembly utilizada em vrios tipos de aplicaes:
n

Controle de processos com resposta em tempo real, devido possibilidade de gerar programas mais eficientes. Neste tipo de aplicao, geralmente o processador deve executar um conjunto de instrues em um tempo limitado. Por exemplo, a cada 10 milisegundos o processador deve ler um dado, process-lo e emitir um resultado. n Comunicao e transferncia de dados , devido possibilidade de acessar diretamente o hardware, a linguagem Assembly utilizada para a implementao de programas de comunicao ou transferncia de dados. n Otimizao de sub-tarefas da programao de alto nvel , um programa no precisa somente ser escrito em linguagem Assembly ou linguagem de alto nvel. Ns podemos ter programas de alto nvel com sub-tarefas escritas em linguagem Assembly. Sendo assim, ns podemos otimizar partes de programas, no caso de tarefas tempo-real ou para a programao do hardware do computador.

4.2.4 Linguagem de Alto Nvel


As linguagens de alto nvel so assim denominadas por apresentarem uma sintaxe mais prxima da linguagem natural, fazendo uso de palavras reservadas extradas do vocabulrio corrente (como READ, WRITE, TYPE, etc...) e permitirem a manipulao dos dados nas mais diversas formas (nmeros inteiros, reais, vetores, listas, etc...); enquanto a linguagem Assembly trabalha com bits, bytes, palavras, armazenados em memria. As linguagens de alto nvel ou de segunda gerao surgiram entre o final da dcada de 50 e incio dos anos 60. Linguagens como Fortran, Cobol, Algol e Basic, com todas as deficincias que se pode apontar atualmente, foram linguagens que marcaram presena no desenvolvimento de programas, sendo que algumas delas tm resistido ao tempo e s crticas, como por exemplo Fortran , que ainda visto como uma linguagem de implementao para muitas aplicaes de engenharia. Cobol um outro exemplo de linguagem bastante utilizada no desenvolvimento de aplicaes comerciais. Em comparao com a linguagem Assembly, a passagem de um programa escrito em linguagem de alto nvel para o programa em linguagem de mquina bem mais complexa. Para esta passagem so utilizados compiladores e linkadores. Com o desenvolvimento das linguagens de alto nvel, o objetivo da independncia de mquina foi amplamente alcana da. Dado que os comandos das linguagens de alto nvel no referenciam os atributos de uma dada mquina, eles podem ser facilmente compilados tanto em uma mquina como em outra. Assim, um programa escrito em linguagem de alto nvel poderia, teoricamente, ser usado em qualquer mquina, bastando escolher o compilador correspondente. Em realidade, no entanto, esta independncia de mquina no to simples. Quando um compilador projetado, certas restries impostas pela mquina subjacente so, em ltima instncia, refletidas como caractersticas da linguagem a ser traduzida. Por

Captulo Captulo 4: 4: Linguagens de Programao

Prof. Roberto Willrich

exemplo, o tamanho do registrador e as clulas de memria de uma mquina limitam o tamanho mximo dos inteiros que nela podem ser convenientemente manipulados. Disso resulta o fato de que, em diferentes mquinas, uma mesma linguagem pode apresentar diferentes caractersticas, ou dialetos. Conseqentemente, em geral necessrio fazer ao menos pequenas modificaes no programa antes de mov-lo de uma mquina para outra. A causa deste problema de portabilidade , em alguns casos, a falta de concordncia em relao correta composio da definio de uma linguagem em particular. Para auxiliar nesta questo, o American National Standards Institute (ANSI) e a International Organization for Standardization (ISO) adotaram e publicaram padres para muitas das linguagens mais populares. Em outros casos, surgiram padres informais, devido popularidade de um dados dialeto de uma linguagem e ao desejo, por parte de alguns autores de compiladores, de oferecerem pro dutos compatveis.

4.2.5 Linguagens estruturadas


Nesta classe, encaixam -se as chamadas linguagens de programao de alto nvel surgidas em meados dos anos 60. As linguagens concebidas neste perodo foram resultado da necessidade da produo de cdigo de programa de forma clara, aparecendo o conceito de estruturao do cdigo (endentao, utilizao de letras maisculas e minsculas nos identificadores, eliminao de instrues problemticas como o go to, etc...). O perodo compreendido entre a dcada de 60 e a de 80 foi bastante produtivo no que diz respeito ao surgimento de linguagens de programao, o que permitiu o aparecimento de uma grande quantidade de linguagens as quais podem ser organizadas da seguinte forma:
n

as linguagens de uso geral, as quais podem ser utilizadas para implementao de programas com as mais diversas caractersticas e independente da rea de aplicao considerada; encaixam-se nesta categoria linguagens como Pascal, Modula-2 e C; as linguagens especializadas , as quais so orientadas ao desenvolvimento de aplicaes especficas; algumas das linguagens que ilustram esta categoria so Prolog, Lisp e Forth; as linguagens orientadas a objeto, que oferecem mecanismos sintticos e semnticos de suporte aos conceitos da programao orientada a objetos; alguns exemplos destas linguagens so Smalltalk, Eiffel, C++ e Delphi.

4.3 Desenvolvimento de Programas


O desenvolvimento de programas associado ao uso de ferramentas ou ambientes de desenvolvimento que acompanham o programador desde a etapa de codificao propriamente dita at a gerao e teste do cdigo executvel. Sero apresentadas a seguir as principais etapas de gerao de um programa, alm das ferramentas utilizadas. Mais adiante sero apresentadas metodologias mais completas que definem os passos para o desenvolvimento de programas. Esta rea da informtica chamada de engenharia de software.

4.3.1 Gerao do cdigo fonte (codificao)


A codificao a escrita, utilizando uma linguagem de programao, das instrues que o computador deve realizar para alcanar um resultado. Para a realizao desta tarefa so utilizados os chamados editores. Os editores so a primeira ferramenta qual o programador recorre na etapa de codificao, pois atravs dela que ser gerado o arquivo (ou o conjunto de arquivos) que vai conter o cdigo-fonte do programa a ser desenvolvido. Apesar de que possvel utilizar qualquer editor de linha (como por exemplo o EDIT do DOS) para gerar o arquivo de programa, alguns ambientes oferecem ferramentas de

Captulo Captulo 4: 4: Linguagens de Programao

Prof. Roberto Willrich

edio mais poderosas (orientadas sintaxe ou de colorao de sintaxe). Alguns ambientes mais recentes oferecem a possibilidade de projeto de interfaces grficas e gerenciadores de eventos, com gerao automatizada do cdigo-fonte.

4.3.2 Traduo do Cdigo Fonte (cdigo objeto)


Independente da linguagem utilizada e da arquitetura do sistema computacional , o cdigo-fonte no executvel diretamente pelo processador. Ele permite apenas que o programador consiga definir o programa em uma forma legvel aos humanos. Para que se possa obter o programa executvel, necessrio que o cdigo -fonte seja traduzido para o cdigo de mquina do processador que compe a arquitetura do sistema. Felizmente, isto realizado de forma automtica graas existncia de ferramentas como os Montadores (ou Assemblers que, como o nome indica, so orientados para traduzir program as escritos na linguagem Assembly) e os Compiladores, construdos para gerar o cdigo de programas originalmente escritos em linguagens de alto nvel como Pascal, C, Fortran e outras. O cdigo gerado por estas ferramentas representado segundo o sistema d e numerao binria e denominado cdigo-objeto. O cdigo-objeto o cdigo produzido pelo compilador. Ele se trata de uma forma intermediria similar a linguagem de mquina do computador. O cdigo-objeto, apesar de estar representado em binrio, no auto-contido, ou seja, no executvel diretamente pelos processadores. A principal razo disto que o cdigo-objeto caracterizado normalmente por referncias a partes de programa que no esto necessariamente definidas no mesmo arquivo que gerou o aquele arquivo objeto. Estas outras partes do cdigo do programa podem ter sido geradas a partir de outros arquivos de cdigo-fonte concebidos pelo mesmo programador ou existirem sob a forma de arquivos de bibliotecas de sub -rotinas.

4.3.3 Editores de ligao


A tarefa realizada pelo editor de ligaes, ou linker como mais conhecido rearranjar o cdigo do programa, incorporando a ele todas as partes referenciadas no cdigo original, resultando num cdigo executvel pelo processador. Esta tarefa pode ser feita tambm pelos chamados carregadores. A figura abaixo resume as trs etapas anteriores.
Cdigo Fonte Cdigo Fonte Cdigo Fonte Cdigo Fonte

Cdigo Objeto

Cdigo Objeto

Cdigo Objeto

Cdigo Objeto

Biblioteca

Programa executvel

Figura 3. Desenvolvimento de um programa

4.3.4 Depuradores ou debuggers


Os debuggers so assim chamados devido sua funo essencial que de auxiliar o programador a eliminar (ou reduzir) a quantidade de bugs (erros) de execuo no seu programa. Eles executam o programa gerado atravs de uma interface apropriada que possibilita uma anlise efetiva do cdigo do programa graas :
n

execuo passo-a -passo (ou instruo por instruo) de partes do programa;

Captulo Captulo 4: 4: Linguagens de Programao

Prof. Roberto Willrich

visualizao do estado do programa atravs das variveis e eventualmente dos contedos dos registros internos do processador; n alterao em tempo de execuo de contedos de memria ou de variveis ou de instrues do programa; n etc...

4.4 Execuo de Programas


Para que um programa possa ser executado, preciso que seja transferido para a memria principal. A maioria dos programas fica armazenada em disco (disco rgido, disquetes, etc.), mas a CPU no pode executar nenhum programa diretamente a partir do disco. O programa precisa ser antes lido do disco e carregado na memria principal. Por exemplo, para executar o programa FORMAT (usado para formatar disquetes), preciso que voc fornea pelo teclado um comando como: FORMAT A: Uma vez que voc digita este comando, o programa FORMAT.COM lido do disco rgido e carregado na memria principal. O carregador (loader) o utilitrio do sistema operacional responsvel pela cpia do programa do dispositivo de armazenamento para a memria principal. A CPU pode ento executar o programa, que far a formatao de um disquete. A Figura 4 simboliza a leitura do programa FORMAT.COM a partir do disco para a memria principal (essa operao chamada de CARGA), e seu processamento pela CPU (essa operao chamada de EXECUO).

Figura 4. Carga e execuo do programa FORMAT.COM O sistema operacional responsvel pela leitura do arquivo FORMAT.COM e a execuo. O MS-DOS um exemplo de sistema operacional. O WINDOWS tambm pode ser considerado uma espcie de sistema operacional. Uma das vrias funes do sistema operacional permanecer o tempo todo ativo na memria principal, es perando que o usurio comande a execuo de algum programa. Portanto, quando se usa um comando como "FORMAT A:", o que ocorrer na verdade o seguinte:
n n

Inicialmente o sistema operacional checa se voc fornece algum comando. Voc digita o comando "FORMAT A:". n O sistema operacional procura no disco o arquivo FORMAT.COM e carrega-o na memria RAM.
n

O sistema operacional momentaneamente transfere o controle da CPU para o programa FORMAT.COM, que a essa altura j est carregado na memria principal.

Captulo Captulo 4: 4: Linguagens de Programao

Prof. Roberto Willrich

A CPU executa o programa FORMAT.COM Ao terminar a execuo do FORMAT.COM, o sistema operacional volta a ter o controle da CPU. Fica ento aguardando que voc envie um novo comando. Podemos entender ento que nenhum programa chega at a memria por mgica, e sim, atravs do controle feito pelo sistema operacional. Algum mais observador pode ento ficar com a seguinte dvida: "Se o sistema operacional quem l para a memria principal todos os programas a serem executados, como ento que o prprio sistema operacional chegou nesta memria?". No instante em que ligamos o computador, a memria principal no contm programa algum. Nesse instante, o sistema operacional est armazenado no disco (normalmente no disco rgido, no caso dos PCs), e precisa ser carregado na memria. Quem faz a carga do sistema operacional para a memria um programa chamado BIOS, que fica gravado em memria ROM. Lembre-se que a memria ROM no perde seus dados quando o computador desligado. Portanto, no instante em que ligamos o computador, o BIOS j est na memria, e imediatamente processado pela CPU. O processamento do BIOS comea com uma contagem de memria, seguido de alguns testes rpidos no hardware, e finalmente a leitura do sistema operacional do disco para a memria principal. Esse processo, ou seja, a carga do sistema operacional na memria RAM, chamado de BOOT. A Figura 5 mostra o processo de BOOT para a carga do sistema operacional DOS:
n

1) No instante em que o computador ligado, o sistema operacional est armazenado em disco, a RAM est "vazia", e a CPU executa o BIOS. 2) Mostra o instante em que termina a operao de BOOT. O sistema operacional j est carregado na memria e j est sendo executado pela CPU. 3) Mostra o que ocorre imediatamente antes da execuo do programa FORMAT.COM. O sistema operacional recebe um comando do usurio para que leia o arquivo FORMAT.COM do disco para a memria RAM. 4) O programa FORMAT.COM est sendo executado pela CPU.

Figura 5. BOOT e carga de um programa

Vous aimerez peut-être aussi