Instituto Superior de Engenharia de Lisboa Introdução à Programação (PG) Docente: Pedro Viçoso Fazenda ([email protected]) Professor Responsável: Pedro Alexandre Pereira ([email protected]) 1 Índice • Hardware • Software • Sistema Operativo • Execução de programas • Operações Lógicas • Interpretador, Compilador, Máquina Virtual • Organização de Código em Java • Exemplo “Hello World” • Identificadores e Palavras Reservadas Programação, ADEETC , ISEL 2 Hardware – Componentes do Computador Dispositivos de Entrada Dispositivos de Saída Memória RAM Microprocessador Armazenagem Persistente Programação, ADEETC , ISEL 3 Hardware – O Microprocessador Linguagem Assembly Código Máquina Programação, ADEETC , ISEL 4 Endereço Hardware – Memória RAM Dados Programação, ADEETC , ISEL 5 Hardware - Motherboard Placa Gráfica Programação, ADEETC , ISEL 6 Hardware - Sistema Operativo Aplicações Sistema Operativo Drivers BIOS Hardware Programação, ADEETC , ISEL 7 Operações Lógicas Operação e Operação ou Operação Negação A B A eB Falso Falso Falso Falso Verdadeiro Falso Verdadeiro Falso Falso Verdadeiro Verdadeiro Verdadeiro A B Falso Falso Falso Falso Verdadeiro Verdadeiro Verdadeiro Falso Verdadeiro Verdadeiro Verdadeiro Verdadeiro A ou B A Negação A Falso Verdadeiro Verdadeiro Falso Programação, ADEETC , ISEL 8 Operações Lógicas - Exemplo Aplicação de Operadores Lógicos X=1 B = (5 > 6) Se (X <= 1) então “salta” Se ((X > 10) ou (B é verdadeiro) ) então Escreve “Azar” Serve, por exemplo, para conduzir a execução de um programa Programação, ADEETC , ISEL “Salta” 9 Java - Introdução A Máquina Virtual Java é um programa que executa um programa!... bytecode . java Máquina Virtual Compilador Sistema Operativo Drivers A Máquina Virtual Java é compilada para cada plataforma específica A Máquina virtual interpreta os ficheiros compilados (bytecode) e executa o programa Java… Programação, ADEETC , ISEL Hardware 10 Java – JRE vs. JDK Java Runtime Environment Consiste na Máquina Virtual Java (JVM – Java Virtual Machine) e as Java class libraries Contém as funcionalidades necessárias para correr os programas feitos em Java. Java Development Kit Contém um conjunto adicional de ferramentas necessárias para criar programas em Java i.e. o compilador, a JVM, e as Java class libraries. Programação, ADEETC , ISEL 11 Java - Características Objectivo do Java: Permitir escrever programas que executem em múltiplas plataformas. Algumas propriedades do Java • Independente da plataforma. A máquina virtual permite criar uma abstracção do sistema operativo subjacente. Como tal, permite criar programas portáteis i.e. programas que conseguem ser executados sobre diversas plataformas sem que para isso tenham que ser modificados… • Orientada a objectos. Excepto tipo de dados primitivos. Todos os outros elementos são objectos Java. • Strongly-typed. Os tipos das variáveis têm que ser pré-definidos e a sua conversão para outros objectos é relativamente restrita – tem que ser feita, na maior parte dos casos, pelo programador. • Gestão automática de memória. O programa não tem acesso directo à memória. Existe um mecanismo (garbage collector) que apaga automaticamente objectos que não estejam mais referenciados. Programação, ADEETC , ISEL 12 Organização do Código em Java • Pacote. Contém classes e outros pacotes. • Classes. Contém métodos, campos e outras classes. • Método. Contém uma sequência de instruções que executam uma determinada funcionalidade no âmbito da classe no qual está inserido. O método pode receber parâmetros… Por exemplo, um método que executa a função f(x) = x*2 • Campo. Contém um conjunto de dados que são utilizados pelo código dos métodos. Estes dados caracterizam o estado de um objecto. Por exemplo, um PontoNoEspaço pode ser caracterizado pelos campos x=10 e y=20… Mas iremos ver isso mais adiante… Programação, ADEETC , ISEL 13 Java – O meu primeiro programa Ficheiro HelloWorld.java Depois de Compilado… Java HelloWorld.java HelloWorld.class A Máquina virtual coloca em execução o código do método public static void main(String[] args) da classe indicada (HelloWorld). Programação, ADEETC , ISEL 14 Java – O meu primeiro programa (Experimentem!...) Programação, ADEETC , ISEL 15 Identificadores em Java • Composta por letras, dígitos e “_” sem espaços • O primeiro símbolo não pode ser um dígito • Distingue-se entre maiúsculas e minúsculas • Não podem ser palavras reservadas • Dimensão ilimitada • Nomes sugestivos que documentem o código. • Convenções: – Classes: UpperCamelCase – Variáveis e métodos: lowerCamelCase – Constantes: UNDER_SCORE • O carácter “$” também é permitido mas não é normalmente usado • O carácter “_” não é normalmente usado no início Programação, ADEETC , ISEL 16 Palavras Reservadas abstract continue for new switch assert default goto* package synchronized boolean do if private this break double implements protected throw byte else import public throws case enum instaceof return transient catch extends int short try char final interface static void class finally long strictfp volitile cont* float native super while * - Não é usado Programação, ADEETC , ISEL 17 Variáveis Locais Sintaxe: Existem 2 Tipos no Java: Tipo Classe e Tipo Primitivo Tipo variável_1, variável_2,…; Exemplos: int numLivros = 10, numPessoas, numReq; char resposta; double valor, taxaJuro; Afectação da variável: variável = Expressão Exemplo: valor = valor + valor*taxaJuro; Programação, ADEETC , ISEL 18 Tipos Primitivos A Linguagem Java é “statically-typed” i.e. todas as variáveis têm que primeiro ser declaradas antes de serem utilizadas Tem que se definir o Tipo e o Nome da Variável Exemplo: int contador = 1; A variável contador existe, contém dados numéricos inteiros, e o valor inicial é 1 A Linguagem Java suporta vários tipos primitivos de dados. (O tipo primitivo é indicado utilizando uma das palavras reservadas) Programação, ADEETC , ISEL 19 Tipos Primitivos – Inteiros (com sinal) byte (8-bits representado na forma de complemento para 2 – O dígito mais significativo (MSB) é o que informa o sinal do número. Se este dígito for o número é positivo, e se for é negativo). Valor Mínimo: -128, Valor máximo: 127 (inclusive). short 16-bits representado na forma de complemento para 2. Valor Mínimo: -32,768 , Valor máximo: 32,767 (inclusive). int 32-bits representado na forma de complemento para 2. Valor Mínimo: -2,147,483,648 , Valor máximo: 2,147,483,647 (inclusive). long 64-bits representado na forma de complemento para 2. Valor Mínimo: -9,223,372,036,854,775,808, Valor máximo: 9,223,372,036,854,775,807 (inclusive). Programação, ADEETC , ISEL 20 Tipos Primitivos - Exemplo Programação, ADEETC , ISEL 21 Tipos Primitivos – Reais (norma IEEE 754) float 32-bits (4 bytes) double 64-bits (8 bytes) Programação, ADEETC , ISEL 22 Tipos Primitivos char Caracteres (Unicode) 2 bytes Exemplos: char c = 'A'; char tab = '\t'; char nul = ' '; char aleph = '\u05D0' boolean Lógicos – true ou false Programação, ADEETC , ISEL 23 Unicode Os 256 primeiros códigos Unicode são idênticos aos do padrão ISO 8859-1 (ASCII): Programação, ADEETC , ISEL 24 Operadores + Prioridade Programação, ADEETC , ISEL 25 Operadores - Exemplo Programação, ADEETC , ISEL 26