1 / 45

Aula 3

Aula 3. Variáveis, expressões, operadores e instruções de selecção. Estrutura de um programa em Java. /** * Estrutura básica de um programa em Java. * @author Xico */ public class NomeDoPrograma { public static void main(String[] parametros) { // Instruções... } }

melita
Télécharger la présentation

Aula 3

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Aula 3 Variáveis, expressões, operadores e instruções de selecção

  2. Estrutura deum programa em Java /** * Estrutura básica de um programa em Java. * @author Xico */ public classNomeDoPrograma{ public static void main(String[] parametros) { // Instruções... } } Todas as frases precedidas de// ou entre/*e */são comentários, sendo ignorados pelo compilador comentários

  3. Variáveis • Servem para guardar informação • Guardam dados que têm de ser de um tipo definido ! (dados provêm de um dado domínio, bem definido) 235 ‘a’ 435.72 “Letras” Cadeia de caracteres (String) Inteiro Letra/caracter Decimal “Letras” 435.72

  4. Variáveis • Antes da primeira utilização : • Tem de sedeclarar quais as variáveis que passam a existir nesse programa, qual o seu nome e tipo - declaração • Deve também ser dado um valor inicial a cada variável - inicialização • Após a declaração: • Podem ser utilizadas para guardar dados (valores) • Colocação de um valor numa variável chama-se atribuição – atribuiçãode um valor a uma variável

  5. Variáveis (representação gráfica) Tipo: (int = inteiro) Nome: numero numero : int 12 Em java: int numero = 12; ou: int numero; numero = 12; Valor: 12

  6. boolean encontrado = false; Variáveis (declaração e inicialização) Nome Valor inicial Tipo: booleano, ou seja, só pode tomar os valores falso e verdadeiro encontrado : boolean false

  7. int número_de_alunos = 39;double taxa_de_conversão = 200.482;char c = ‘A’; Nomes de pedaços de memória(na verdade são traduzidos para endereços de memória) Interpretação do conteúdo baseada no tipo associado Variáveis (declaração e inicialização)

  8. Variáveis e Identificadores • Variáveis são conhecidas pelo seu nome: • O nome da variável é umidentificador • Os identificadores não podem ser repetidos na mesma zona do programa Nota: matéria a desenvolver em aulas futuras

  9. Variáveis e Identificadores • Identificadores não podem ser quaisquer: • São constituídos por letras, números e os caracteres _ e $ • Os identificadores começados por _ e $ são usados nas bibliotecas standard e devem ser evitados noutros programas. • Primeiro caracter não pode ser um algarismo (0, 1, …, 9) • Maiúsculas e minúsculas são caracteres diferentes! • Não podem ser palavras reservadas (e.g. for, while, int, if, for, etc.)

  10. Palavras Reservadas, Variáveis e Tipos • Palavras Reservadas de uma Linguagem: • Têm um significado especial para o compilador • Não podem ser usadas para outras finalidades • Variáveis são criadas sempre associadas a um tipo de dados • Tipo de dados é sempre uma palavra reservada (tipos primitivos) • Não pode ser usado para outras finalidades Exemplo: int é palavra reservada em JAVA float int = 300.0; // ERRO FLAGRANTE!

  11. Tipos de dados • Primitivos • char – um caracter • int – número inteiro (existem três outros tipos de inteiros) • float ou double – número decimal • boolean – verdadeiro ou falso • Classes • Object • String – cadeia de caracteres • … • Tipos definidos pelo utilizador

  12. Caracteres • Tipo: char • Número de bits para guardar um caracter: 16 • Número total de padrões de bits: 216 = 65 536 • Código: Unicode ( associa um número a cada caracter independente do idioma. Sugestão: consulte Unicode) char memória ‘A’ ..... 0000 0000 0100 0001 ‘a’ ..... 0000 0000 0110 0001 ‘0’ ..... 0000 0000 0011 0000

  13. Inteiros Exemplo: • Tipo: int • Número de bits: 32 memória int 0000 0000 0000 0000 0000 0000 0100 0001 … 65

  14. Valores decimais (ou em vírgula flutuante) Exemplos: • Tipo: float • Número de bits: 32 • float x = 0.0f; (ou 0.0F) ( por omissão um real é double; para ser explicita- mente float poderá inicializar-se a var. desta forma ) memória float 0000 0000 0000 0000 0000 0000 0100 0001 … 9.1E-44 • Tipo: double • Número de bits: 64 • double x = 0.0; (ou 0.0d ou 0.0D)

  15. Memória Cada célula temum endereço, em base hexadecimal, ex: @10b62db Os 32 bits de memória: 0000 0000 0000 0000 0000 0000 0100 0001 podem corresponder a: • (char) ‘A’… apenas considera os 16 à direita • (int) 65 • (float) 9.1E-44 Nota: o que está num endereço de memória pode ser igual ... mas ser interpretado de formas diferentes... 26 * 1 + 20 * 1

  16. Memória A mesma memória pode ser vista a vários níveis: x:int letra:char Variáveis com nomes e tipos … … 5 ’A’ Conteúdos, assumindo tipos definidos … 5 ‘A’ … … 0 0 1 0 1 0 … 0 1 0 0 0 0 0 1 Representação binária (o que realmente lá está)

  17. Referências/Objectos Memória dinâmica(heap) Object um_objecto = new Object(); String cadeia = new String(“ISCTE”); @10b62c9 … @10b62ca … Memória estática(stack) … @10b62db … … um_objecto : Object ‘I’ @10b62e8 Object@10b62c9 ‘S’ @10b62e9 cadeia : String @10b62ea ‘C’ String@10b62db ‘T’ @10b62eb ‘E’ @10b62ec

  18. Tipos primitivos em JAVA (8 tipos)

  19. 37512375-12 Escrita de valores no ecrã • Para escrever informação no monitor: System.out.print(); System.out.println(); • A última versão efectua mudança de linha no fim da escrita Ex: System.out.println(375); int x = 12; System.out.println(x); System.out.println(“ “ + 375 + “-” + x); ecrã

  20. Escrita de valores numa janela • Para escrever informação numa janela: JOptionPane.showMessageDialog (null, “mensagem”);

  21. 32 2.03.0 Escrita de valores no ecrã int x = 3;System.out.print(x);System.out.print(2); double x = 2.0;System.out.println(x);System.out.println(3.0); ecrã

  22. Leitura de valores do teclado • Até há pouco tempo não existia nos packages da linguagem um método directo em JAVA para ler informação do teclado. Era necessária uma sequência de várias operações, por exemplo: String s = ""; char c; try { do { c = (char)System.in.read(); s = s + c; } while (c != '\n'); } catch(IOException e) {} Só por curiosidade

  23. Leitura de valores do teclado • Há cerca de dois anos, um grupo de investigadores desenvolveu uma classe, Scanner, utilizável em qualquer máquina, que facilita a interface com o computador e o input em programas em Java. • Para podermos recorrer aos métodos definidos para esta classe Scanner, basta que no nosso programa importemos o package(ou biblioteca) desta classe, que lhes permite aceder e utilizar: import java.util.Scanner; e que criemos um objecto do tipo Scanner (p.e., teclado): Scanner teclado = new Scanner (System.in); • Agora, recorrendo a teclado, podemos ler diferentes dados, p.e., um valor inteiro n (existem inúmeros métodos: de leitura, pesquisa, etc.): int n = teclado.nextInt(); :Teclado.tipoLido(), ex: int x = Teclado.intLido(); char c = Teclado.charLido(); Introdução à Programação - Aula 3

  24. Leitura de valores do teclado • Outro método para ler informação do teclado (sequência de operações) ... ex: public static void main (String[] args) throws Exception /* e System.out.println("Erro de leitura");*/ { InputStreamReader leitor = new InputStreamReader (System.in); BufferedReader input = new BufferedReader(leitor); System.out.print("Introduza um inteiro positivo: "); String linha = input.readLine(); int m = Integer.parseInt(linha); System.out.print("Introduza outro inteiro positivo: "); linha = input.readLine(); int n = Integer.parseInt(linha); • Por agora abreviaremos as instruções de leitura com:teclado.nextTipo() (sendo teclado uma variável pré-definida por nós) Só por curiosidade

  25. Leitura de valores de uma janela • É possível também usar uma janela para ler valores (p.e., uma frase ou cadeia de caracteres - String) a partir do teclado: import javax.swing.JOptionPane; public class Janelas { public static void main(String[] parametros) { String lida = JOptionPane.showInputDialog("Insira uma frase: "); if (lida != null) JOptionPane.showMessageDialog(null, "Escreveu: " + lida); } }

  26. Wrappers – objectos com funcionalidades semelhantes às de um tipo primitivo • É possível considerar um valor de uma classe primitiva como se fosse um objecto. Para cada um dos oito tipos primitivos em Java existe, associada, uma wrapper class – com variáveis do correspondente tipo primitivo. Entre as funcionalidades das wrapper classes encontramos várias rotinas – termo que passaremos a designar por métodos – como por exemplo: int i = Integer.parseInt(“123”); // para converter umaString num valor inteiro Em geral, podemos recorrer a: tipo v = Tipo.parseTipo(); i = 123

  27. Criação de Objectos– abordagem provisória* • Declaração de um objecto (p.e. uma variável) ClasseDoObjecto nomeDoObjecto; ( p.e., int numero; ) ( p.e., int numero = 5; ) • Criação de um objecto (p.e. uma variável) nomeDoObjecto = new ClasseDoObjecto (parâmetros); ( p.e., Integer i = new Integer (i); ) ( p.e., Integer i = new Integer (5); ) Esta declaração somente cria espaço para armazenar um endereço de memória onde um objecto do tipo declarado possa ser guardado (o valor do objecto não foi ainda atribuído) A criação de um objecto é feita através do operador new (que o inicializa devidamente) * Nota * : desenvolveremos esta questão mais tarde, quando abordarmos Classes

  28. Instruções • Uma instrução em Java pode ser da forma expressão; • Uma expressão é constituída por: • Operadores • Variáveis • Valores literais • ...

  29. Operação de atribuição • Altera o valor de uma variável variável = expressão; Exemplo: x = 4 + 8; nome : tipo valor x : int 12

  30. Conversões (cast) Conversões possíveis entre tipos de dados: • char «--» números inteiros • números decimais «--» números inteiros Conversões impossíveis(por enquanto …): • boolean «--» qualquer outro tipo • referência «--» qualquer outro tipo

  31. 65,A,65.0 a,97,97.0 65,A,65.0 Conversões (cast) int i = 65; char c = 'a'; System.out.println(" "+i+“,"+(char)i+“,"+(float)i+" "); System.out.println(" "+c+“,"+(int)c+“,"+(float)c+" "); ecrã

  32. 0 3 Operadores aritméticos (I) • +, -, *, / e % • A divisão (/) é a divisão inteira se os seus operandos forem inteiros int x = 1 / 2; // ex. exp.javaSystem.out.println(x); • % significa resto da divisão inteira: int x = 15 % 6;System.out.println(x);

  33. 2.5 Operadores aritméticos (II) • Se os operandos forem de tipos diferentes, o operando de um tipo com menor domínio (gama de valores) é convertido para o tipo maior domínio antes do cálculo: System.out.println(1.5 + 1); convertido para 1.0 sem ser preciso escrever (double)

  34. 16 4 Precedência e associatividade (I) • Regras comuns respeitadas: System.out.println(1 + 5 * 3);System.out.println(16 / 2 / 2);

  35. 0 0 1.0 1 Precedência e associatividade (II) • Excepção: atribuição int i = 1, j = 1;i = j = 0;System.out.println(i + “ ” + j); • Valor da atribuição é o valor da variável atribuída int x = 0; double f = 0.0; f = x = (int)1.3;System.out.println(f + “ ” + x);

  36. Operadores relacionais e deigualdade e diferença • Operadores relacionais: • >, >=, <, <= • Operador de igualdade: • == • Operador de diferença: • != • O resultado é sempre um boolean (true ou false)

  37. Operadores lógicos • Operadores lógicos: • &&: E • ||: OU • !: Negação • O resultado é sempre um boolean (true ou false) • Exemplo (x está entre 0 e 10?): boolean b = (x >= 0 && x <= 10) • Exemplo (x é menor que 0 ou maior que 10?): boolean b = (x < 0 || x > 10)// Estas expressões boolean b = !(x >= 0 && x <= 10)// são equivalentes

  38. x: int x: int 4 3 Operadores deincrementação e decrementação • ++ e -- prefixos e sufixos (diferenças analisadas mais tarde) • Somar 1 a x: ++x; operador prefixooux++; operador sufixo nota: ex. em exp.java • Soma x+1 -> 4(guarda 4 em memória) • Põe o 4 em x são ambas abreviaturas de: x = x + 1;

  39. Instrução de selecção if(condição){ instruções_1; } else { instruções_2; } Guarda executada quando a condição é verdadeira executada quando a condição é falsa nota: ver ex. exp_if.java

  40. //Se x<0 escreve 0 senão escreve 1 int x = 13; if(x < 0) { x = 0; } else { x = 1; } System.out.println(x); x: int x: int 13 1 Instrução de selecção: Exemplo 1

  41. int x = teclado.nextInt(); if(x >= 0 && x <= 10) { x = 0; } System.out.println(x); x: int x: int 8 0 Instrução condicional: Exemplo Abreviatura para instrução de leitura 8 0 Dados introduzidos pelo utilizador

  42. int x = teclado.nextInt(); if(x >= 0 && x <= 10) { x = 0; } System.out.println(x); x: int -3 Instrução condicional: Exemplo -3 ? O que apareceria no ecrã?

  43. A reter... • Variáveis: • Servem para guardar informação • Têm sempre tipo, nome e valor • Expressões: • Combinam variáveis e operadores produzindo um valor • Instruções de selecção (if): • Servem para indicar em que condições um conjunto de instruções é executado ou não

  44. A ler... Capítulos 3, 5 e 7: Y. Daniel Liang, "Introduction to Java Programming", 5ª Edição, Prentice-Hall, 2005.ISBN: 0-13-185721 - 5

  45. Aula 3: Sumário • Tipos primitivos em Java • Noções sobre a representação física dos tipos • Noções sobre códigos de caracteres • Interpretação de valores do tipo char como inteiros • Valores literais • Expressões e operações • Operação de atribuição: alteração do estado da memória • Precedência e associatividade de operadores • Instrução de selecção ifelse

More Related