Академический Документы
Профессиональный Документы
Культура Документы
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
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).
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.
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.
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
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.
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
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.
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.
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.
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.
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.
Cdigo Objeto
Cdigo Objeto
Cdigo Objeto
Cdigo Objeto
Biblioteca
Programa executvel
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...
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.
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.