tema 3.computadores e linguagens linguagens de ... · schaum’s outline series. mcgraw-hill. h....
TRANSCRIPT
Aula teórica 3
Tema 3.Computadores e linguagens • Linguagens de Programação • Compilação e linkagem • LP Java
Preparado por eng.Tatiana Kovalenko
Linguagens de Programação Para escrever programas é necessário utilizar linguagens de programação (LP). Uma linguagem de programação é um conjunto de comandos e símbolos especiais que têm um significado exacto e inequívoco, correspondendo a tarefas bem definidas, que se pretende que o computador execute. As LP possuem a sua própria gramática. Já aprendemos que computador trata, internamente, os dados sob a forma de um código baseado na numeração binária (0,1). A linguagem que o processador “entende”, de facto, é construída pelas instruções elementares que fazem parte do seu instruction set. Essa linguagem designa-se por linguagem máquina. As instruções codificadas em linguagem máquina são constituídas por sequências de bits com correspondência directa a determinadas acções a efectuar pelo processador e apresentam um aspecto semelhante ao seguinte:
2
0 15 código endereço endereço 2º operando operação 1º operando ou instrução
Fig. Instrução típica de um processador de 16 bit.
Os primeiros computadores eram exclusivamente programados em linguagem máquina, o que tornava a programação um trabalho extremamente lento, complexo e muito sujeito a erros. Ex: 1101 0000 0000 0111
1011 1111 1110 1000 1101 0010 0000 0111 1011 1111 1110 1000 1001 0000 0000 0000
As linguagens de programação baseadas neste código são designadas por linguagens de baixo nível.
011 0110 01101001
3
Para facilitar a leitura destas instruções, na década de 50 desenvolveram-se l inguagens, que uti l izam mnemónicas correspondentes às instruções binárias mas que ainda estão directamente relacionadas com o hardware são linguagens Assembly. Por exemplo: Instrução MOV significa que o processador deve mover informação dos seus próprios registos internos para determinada localização de memória.
MOV A,1 MOV B,2 ADD A,B MOV 4C00h,A INT 21h
Existe uma relação muito directa entre as instruções assembly e as instruções máquina. Todavia, o processador não pode executar directamente as linguagens assembly.
4
Estas linguagens necessitam de um outro programa tradutor chamado Assembler.
Linguagem Assembly Assembler Linguagem
Máquina CPU
Assembly são muito mais fáceis de tratar pelos programadores, mas possuem ainda alguns inconvenientes:
Ø dependem do próprio hardware, sendo diferentes de computador para computador;
Ø são ainda pouco práticas.
Para contornar essas dificuldades desenvolveu-se um conjunto de linguagens de alto nível (BASIC, COBOL, FORTRAN, Pascal, C, C++, Java,etc), que não exigem ao programador o conhecimento da organização interna do computador e estão mais próximas da linguagem humana. A cada instrução em LP de alto nível correspondem muitas instruções em linguagem máquina.
Ex. de instrução numa LP de alto nível : x = a+ b; 5
Estas linguagens têm regras de sintaxe próprias. Para computador poder executar um programa na linguagem de alto nível é necessário de efectuar a tradução desta para o código da máquina.
Existem duas classes de programas que fazem essa tradução: § os compiladores; § os interpretadores.
O compilador transforma o programa escrito em linguagem de alto nível, num outro programa, escrito em linguagem máquina. Este processo designa-se por compilação.
O programa original, escrito em linguagem de alto nível, designa-se por programa fonte (source program).
O programa obtido depois da compilação designa-se por programa objecto (object program).
O interpretador no momento em que cada instrução é executada intervém, para transformar essa instrução de alto nível no código máquina que o processador executa. Este processo, torna naturalmente mais lenta a execução dos programas interpretados. 6
Linguagem de Alto Nível
Compilador Interpretador
Linguagem máquina CPU
Programa fonte
Programa objecto
Do ponto de vista do programador, as LP de alto nível são relativamente independentes do processador que as vai executar.
Para que uma LP de alto nível possa ser executada em processadores diferentes, é necessário que exista, para cada processador o respectivo compilador da linguagem.
7
Compilação e linkagem No que diz respeito aos programas compilados, existem duas
fases necessárias, até se obter um programa executável: 1. compilação que consiste na transformação do código fonte
em código objecto. 2. a fase imediatamente subsequente designa-se por
l i n k a g e m . N e s t a f a s e a d i c i o n a m - s e r o t i n a s complementares, disponibilizadas pelo próprio compilador e que complementam esse código, produzindo um programa executável.
Código em linguagem de alto nível
Código objecto
Programa executável
Funções complementáres
Compilação
Linkagem
8
Os programas DOS (executam-se sob sistema operativo MS-DOS) utilizam a linkagem estática. Isto é, que todas as rotinas que fazem parte do programa são integradas no programa executável e carregadas para a memória quando o programa é executado. No ambiente Windows utilizam a linkagem dinâmica. Neste caso, uma aplicação pode ser constituída por um programa executável e por vários ficheiros contendo código executável (.dll – Dinamic Linking Libraries) e só são carregados para a memória quando necessário.
9
Linguagem de programação Java q foi criada nos anos 90 com objectivo de criar uma nova LP
que pudesse ser executada em qualquer tipo do computador;
q foi considerado um computador virtual que se imagina capaz de executar um código constituído por instruções simples. Este código é chamado por bytecode, pois é usado 1 byte para representar cada instrução;
q compilador de Java, ao contrário dos compiladores tradicionais, não vai gerar código executável, mas sim bytecode;
q é necessário que cada computador tenha um programa que possa interpretar e executar bytecode. Ao conjunto de todos os intérpretes disponíveis dá-se o nome de máquina virtual Java (JVM- Java Virtual Machine).
10
O esquema seguinte descreve o processo de criação, compilação e execução de um programa em Java:
11
Para criar programas em Java é necessário ter o Java Development Kit (JDK) instalado no computador. O JDK inclui diversas ferramentas úteis, como seja o compilador (chamado javac), o interprete de bytecode (chamado java) e um largo conjunto de classes já programadas com respectiva documentação. É comum a utilização de ambientes integrados de desenvolvimento que facilitam a utilização do JDK (tais como Gel, Eclipse, BlueJ, NetBeans, etc.
12
Estrutura de um programa em Java Um programa em Java é um conjunto de uma ou mais classes, uma das quais será a principal e deve ter o mesmo nome que o ficheiro.
Uma classe pode ser vista como um conjunto de variáveis e subprogramas(métodos), sendo que cada um destes últimos contêm instruções que lhes permitem desempenhar uma determinada tarefa.
Três tipos de componentes principais constituem um programa: v Declarações , que reservam a memória para o
armazenamento da informação envolvida. v Instruções, que definem as acções e decisões a tomarem. v Comentários que são úteis para os humanos, mas
ignorados pelo computador. 13
O conjunto de caracteres do Java A sintaxe do Java inclui palavras reservadas, símbolos, identificadores e valores. Utilizam-se: Ø as letras de A a Z (maiúsculas e minúsculas), Ø os dígitos 0 a 9, Ø os símbolos especiais:
+ . < ( - : <= ) * ; > [ / ‘ >= ] % , = = { = ^ != }
q palavras reservadas que têm em Java um significado padrão e predefinido. Por exemplo, while, if e new são instruções e class, int indicam tipos de informação declarada. 14
Identificadores Um identificador é um nome que é dado a um elemento do programa, tal como uma constante, variável, subprograma ou classe.
Os identificadores são compostos de letras (somente da língua inglesa), dígitos, caracteres _ e $ em qualquer ordem, desde que o primeiro caracter não seja um digito.
O Java distingue entre maiúsculas e minúsculas, ou seja, Max, max e MAX são considerados identificadores diferentes.
É comum usar certas convenções para os identificadores: • o nome de uma classe começa por maiúscula (Poligono); • o nome de um subprograma(método) começa por minúscula
(por ex. main()); • o nome de uma variável começa por minúscula (cateto1); • o nome de uma constante é todo em maiúsculas (TAXA).
15
M Não pode usar palavras reservadas como identificadores x1, 2x1, soma, a_b, $dollar, máximo, teste 1
Variáveis
Uma variavel representa uma localização em memória do computador que tem um nome atribuído pelo programador e que vai servir para guardar informação de um determinado tipo.
O valor de uma variável pode variar durante a execução de um programa.
A declaração de variáveis é obrigatória. A sintaxe da declaração de variáveis é a seguinte: tipo_dado nome_da_variavel; ou tipo_dado nome_da_variavel=valor_inicial; Segunda forma, alem de declarar, inicializa a variável com valor fornecido.
16
Exemplos: int numConta; int valMax = 1; double preco, total;
Constantes Constantes são os dados cujos valores se mantém inalterados ao longo do programa. A sintaxe de declaração de uma constante é a seguinte: final tipo_de_dado NOME_DE_CONSTANTE = valor; Exemplo: final int MAX_STUDENTS = 25;
M Não pode mudar o valor da constante após a sua declaração!
17
Referência bibliográfica:
António José Mendes; Maria José Marcelino. “Fundamentos de programação em Java 2”. FCA. 2002.
Carriço, José; Carriço, António. "Computadores, Tecnologias e sistemas de Informação- O Núcleo de Sistema“. Centro de Tecnologias de Informação Ltd. Lisboa. 1997
Carriço, José; Carriço, António. "Computadores, Tecnologias e sistemas de Informação- Periféricos, Internet e multimédia“. Centro de Tecnologias de Informação Ltd. Lisboa. 1997.
Carriço, José; Carriço, António. "Computadores, Tecnologias e sistemas de Informação- Tecnologias de Software“. Centro de Tecnologias de Informação Ltd. Lisboa.1997.
Elliot Koffman; Ursula Wolz. “Problem Solving with Java”. 1999.
John R. Hubbard. “Theory and problems of programming with Java”. Schaum’s Outline series. McGraw-Hill.
H. Deitel; P. Deitel. “Java, como programar”. 4 edição. 2003. Bookman.
Rui Rossi dos Santos. “Programando em Java 2– Teoria e aplicações”. Axcel Books. 2004
18