Bacharelado em Ciência e Tecnologia Processamento da Informação Fluxo de Execução de Programa Prof. Rodrigo Hausen Bacharelado em Ciência e Tecnologia Processamento da Informação Fluxo de Execução de Programa Prof. Rodrigo Hausen Bacharelado em Ciência e Tecnologia Processamento da Informação Constante valor definido pelo programador que não pode ser alterado durante a execução do programa. • Exs.: – Inteiras (int): 1, 3, 9, 10000 – com parte fracionária (float, double): 4.01, 7.5, 6.022E23 – caracteres (char): 'a', 'A', 'ô', '3', '\'' – Cadeia de caracteres (String): “Bom dia”, “12345”, “Seu saldo é de R$ 100,00.”) Bacharelado em Ciência e Tecnologia Processamento da Informação Variável (aquilo que varia) valor que pode ser alterado durante a execução do programa Em Java, cada variável pode ser pensada como uma “gaveta” imaginária, onde cabe um único tipo de dado: número inteiro (int) núm. com parte fracionária (float ou double) valor lógico (boolean) Atenção! S maiúsculo caractere (char) cadeia de caracteres (String) Bacharelado em Ciência e Tecnologia Processamento da Informação Variável Para usarmos uma variável, precisamos primeiramente declará-la. Em Java, a declaração de uma variável deve ser sempre com o tipo seguido do nome. O nome deve começar por uma letra (geralmente minúscula) seguida apenas por zero ou mais letras, números ou caractere de sublinhado (_). Exs.: int n; double media; char blink182; String nomeDoAluno; boolean pode_prosseguir; Bacharelado em Ciência e Tecnologia Processamento da Informação Expressão Combinação de constantes/variáveis por meio de operações Operadores aritméticos: atuam sobre números + soma * multiplicação % resto de divisão - subtração / divisão (op. Módulo) obs.: em Java, não existe operador para exponenciação xy Parênteses agrupam as operações, mudando a ordem com que são realizadas Bacharelado em Ciência e Tecnologia Processamento da Informação Expressão O operador + também tem outro papel: o de concatenar cadeias de caracteres. Qual é o resultado das expressões abaixo? Verifique no NetBeans – “Bom” + “dia” – “Bom” + “ ” + “dia” – “4” + “2” Bacharelado em Ciência e Tecnologia Processamento da Informação Expressão Operadores de comparação: comparam dois números. O resultado da comparação é verdadeiro ou falso. > maior que >= maior ou igual > menor que >= menor ou igual == igual a != diferente de (≠) Atenção! O operador de igualdade é == (dois sinais de igualdade, sem espaço entre eles) Bacharelado em Ciência e Tecnologia Processamento da Informação Expressão Operadores lógicos ou booleanos: comparam dois valores lógicos. O resultado da comparação é verdadeiro ou falso. == igual a != diferente de (≠) && E lógico (conjunção) || OU lógico (disjunção) ! negação (colocado antes do valor) Bacharelado em Ciência e Tecnologia Processamento da Informação Variáveis e expressões Após definirmos uma variável, podemos atribuir um valor a ela. String nome; nome = "Joaquim José"; ATENÇÃO: cuidado com os operadores!!!! • atribuição é sempre = • comparação é sempre == Bacharelado em Ciência e Tecnologia Processamento da Informação Variáveis e expressões Após definirmos uma variável, podemos atribuir um valor a ela. String nome; nome = "Joaquim José"; OBSERVAÇÃO IMPORTANTE: Em Java, a atribuição sempre é feita da direita para a esquerda! Portanto, do lado esquerdo de uma atribuição, sempre deve haver uma variável! Bacharelado em Ciência e Tecnologia Processamento da Informação Variáveis e expressões Após definirmos uma variável, podemos atribuir um valor a ela. String nome; nome = "Joaquim José"; Podemos também declarar uma variável e imediatamente atribuir um valor a ela: String nome = "Joaquim José"; Bacharelado em Ciência e Tecnologia Processamento da Informação Variáveis e expressões Após definirmos uma variável, podemos atribuir um valor a ela. String nome; nome = "Joaquim José"; Podemos também declarar uma variável e imediatamente atribuir um valor a ela: String nome = "Joaquim José"; Podemos atribuir a uma variável o valor de uma expressão double x = 3.0; double y = 4.1*x – 9.5; Bacharelado em Ciência e Tecnologia Processamento da Informação Variáveis e expressões Atividade 1: 1) Crie o projeto CalculaMedia 2) Declare duas variáveis, prova e trabalho, para armazenar, respectivamente, a nota da prova e do trabalho de um aluno de PI (qual o tipo mais adequado para estas variáveis?). Atribua a elas os valores 7.5 e 6.5, respectivamente. 3) Declare a variável media e atribua a ela o valor de uma expressão que calcule a média do aluno em PI usando as variáveis prova e trabalho. 4) Imprima es valores na tela como no exemplo Bacharelado em Ciência e Tecnologia Processamento da Informação Variáveis e expressões Exemplo de execução (o que deve aparecer na tela): Nota da prova: 7.5 Nota do trabalho: 6.5 Média da parte prática: 7.1 Altere os valores das variáveis prova e trabalho, execute novamente o programa e veja se a média é alterada conforme esperado. Bacharelado em Ciência e Tecnologia Processamento da Informação Variáveis e expressões Atividade 2: 1) Crie o projeto TrocandoVariaveis 2) Declare duas variáveis a e b do tipo inteiro e atribua valores diferentes a elas 3) Após a declaração e atribuição, faça um código que troque os valores entre as duas variáveis. Use uma variável auxiliar para fazer essa troca. 4) Troque novamente os valores, agora sem usar uma variável auxiliar. Por que você pode garantir que este código funciona? Bacharelado em Ciência e Tecnologia Processamento da Informação 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 int a = 3; int b = 5; // com var. aux. int temp; temp = b; b = a; a = temp; System.out.println("a: " +a+ ", b: " +b); // sem var. aux. a = a – b; b = b + a; a = b - a; System.out.println("a: " +a+ ", b: " +b); Bacharelado em Ciência e Tecnologia Processamento da Informação 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 int a = 3; int b = 5; linha a b temp 1 3 ñ decl. ñ decl. // com var. aux. int temp; temp = b; b = a; a = temp; System.out.println("a: " +a+ ", b: " +b); // sem var. aux. a = a – b; b = b + a; a = b - a; System.out.println("a: " +a+ ", b: " +b); Bacharelado em Ciência e Tecnologia Processamento da Informação 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 int a = 3; int b = 5; linha a b temp 1 3 ñ decl. ñ decl. 3 5 ñ decl. // com var. aux.2 int temp; temp = b; b = a; a = temp; System.out.println("a: " +a+ ", b: " +b); // sem var. aux. a = a – b; b = b + a; a = b - a; System.out.println("a: " +a+ ", b: " +b); Bacharelado em Ciência e Tecnologia Processamento da Informação 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 int a = 3; int b = 5; linha a b temp 1 3 ñ decl. ñ decl. 3 5 ñ decl. // com var. aux.2 int temp; 5 3 5 ? temp = b; b = a; a = temp; System.out.println("a: " +a+ ", b: " +b); // sem var. aux. a = a – b; b = b + a; a = b - a; System.out.println("a: " +a+ ", b: " +b); Bacharelado em Ciência e Tecnologia Processamento da Informação 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 int a = 3; int b = 5; linha a b temp 1 3 ñ decl. ñ decl. 5 ñ decl. 5 ? 5 5 3 // com var. aux.2 int temp; 5 3 temp = b; 6 3 b = a; a = temp; System.out.println("a: " +a+ ", b: " +b); // sem var. aux. a = a – b; b = b + a; a = b - a; System.out.println("a: " +a+ ", b: " +b); Bacharelado em Ciência e Tecnologia Processamento da Informação 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 int a = 3; int b = 5; linha a b temp 1 3 ñ decl. ñ decl. 5 ñ decl. 5 ? 5 5 3 // com var. aux.2 int temp; 5 3 temp = b; 6 3 b = a; 7 3 a = temp; System.out.println("a: " +a+ 3 5 ", b: " +b); // sem var. aux. a = a – b; b = b + a; a = b - a; System.out.println("a: " +a+ ", b: " +b); Bacharelado em Ciência e Tecnologia Processamento da Informação 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 int a = 3; int b = 5; linha a b temp 1 3 ñ decl. ñ decl. 3 5 ñ decl. // com var. aux.2 int temp; 5 3 5 ? temp = b; 6 3 5 5 b = a; 7 3 3 5 a = temp; System.out.println("a: 8 5" +a+ ", 3 b: " 5+b); // sem var. aux. a = a – b; b = b + a; a = b - a; System.out.println("a: " +a+ ", b: " +b); Bacharelado em Ciência e Tecnologia Processamento da Informação 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 int a = 3; int b = 5; linha a b temp 1 3 ñ decl. ñ decl. 3 5 ñ decl. // com var. aux.2 int temp; 5 3 5 ? temp = b; 6 3 5 5 b = a; 7 3 3 5 a = temp; System.out.println("a: 8 5" +a+ ", 3 b: " 5+b); 9 5 3 5 // sem var. aux. a = a – b; b = b + a; a = b - a; System.out.println("a: " +a+ ", b: " +b); Bacharelado em Ciência e Tecnologia Processamento da Informação 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 int a = 3; int b = 5; linha a b temp 1 3 ñ decl. ñ decl. 3 5 ñ decl. // com var. aux.2 int temp; 5 3 5 ? temp = b; 6 3 5 5 b = a; 7 3 3 5 a = temp; System.out.println("a: 8 5" +a+ ", 3 b: " 5+b); 9 5 3 5 // sem var. aux. 12 2 3 5 a = a – b; b = b + a; a = b - a; System.out.println("a: " +a+ ", b: " +b); Bacharelado em Ciência e Tecnologia Processamento da Informação 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 int a = 3; int b = 5; linha a b temp 1 3 ñ decl. ñ decl. 3 5 ñ decl. // com var. aux.2 int temp; 5 3 5 ? temp = b; 6 3 5 5 b = a; 7 3 3 5 a = temp; System.out.println("a: 8 5" +a+ ", 3 b: " 5+b); 9 5 // sem var. aux. 12 2 a = a – b; b = b + a; 13 2 a = b - a; System.out.println("a: " +a+ 3 5 3 5 5 5 ", b: " +b); Bacharelado em Ciência e Tecnologia Processamento da Informação 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 int a = 3; int b = 5; linha a b temp 1 3 ñ decl. ñ decl. 3 5 ñ decl. // com var. aux.2 int temp; 5 3 5 ? temp = b; 6 3 5 5 b = a; 7 3 3 5 a = temp; System.out.println("a: 8 5" +a+ ", 3 b: " 5+b); 9 5 // sem var. aux. 12 2 a = a – b; b = b + a; 13 2 a = b - a; 14 3 System.out.println("a: " +a+ 3 5 3 5 5 5 5 5 ", b: " +b); Bacharelado em Ciência e Tecnologia Processamento da Informação 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 int a = 3; int b = 5; linha a b temp 1 3 ñ decl. ñ decl. 3 5 ñ decl. // com var. aux.2 int temp; 5 3 5 ? temp = b; 6 3 5 5 b = a; 7 3 3 5 a = temp; System.out.println("a: 8 5" +a+ ", 3 b: " 5+b); 9 5 3 5 // sem var. aux. 12 2 3 5 a = a – b; b = b + a; 13 2 5 5 a = b - a; 14 3 5 5 System.out.println("a: " +a+ ", b: " +b); 15 3 5 5 Bacharelado em Ciência e Tecnologia Processamento da Informação Teste de mesa Estratégia linha a b temp importantíssima 1 3 ñ decl. ñ decl. para entender 2 3 5 ñ decl. o funcionamento 5 3 5 ? do programa e 3 5 5 detectar erros de 6 programação (bugs) Tabele todas as variáveis importantes (uma por coluna) e execute o programa, linha por linha. Se você não souber explicar como seu programa funciona, considere-o como se estivesse errado! Bacharelado em Ciência e Tecnologia Processamento da Informação Teste de mesa 1 2 3 Com algumas adaptações, pode até mesmo ser usado para demonstrar formalmente que o seu programa está correto. Ex.: demonstre que o trecho de código abaixo troca corretamente os valores de a e b. a = a – b; b = b + a; a = b – a; Bacharelado em Ciência e Tecnologia Processamento da Informação Teste de mesa 1 2 3 Com algumas adaptações, pode até mesmo ser usado para demonstrar formalmente que o seu programa está correto. Ex.: demonstre que o trecho de código abaixo troca corretamente os valores de a e b. a = a – b; b = b + a; a = b – a; linha Antes 1 1 2 3 a X X-Y X-Y Y b Y Y X X Bacharelado em Ciência e Tecnologia Processamento da Informação Teste de mesa 1 2 3 Com algumas adaptações, pode até mesmo ser usado para demonstrar formalmente que o seu programa está correto. Ex.: demonstre que o trecho de código abaixo troca corretamente os valores de a e b. a = a – b; b = b + a; a = b – a; linha Antes 1 1 2 3 a X X-Y X-Y Y b Y Y X X Bacharelado em Ciência e Tecnologia Processamento da Informação Teste de mesa 1 2 3 Com algumas adaptações, pode até mesmo ser usado para demonstrar formalmente que o seu programa está correto. Ex.: demonstre que o trecho de código abaixo troca corretamente os valores de a e b. a = a – b; b = b + a; a = b – a; linha Antes 1 1 2 3 a X X-Y X-Y Y b Y Y X X Bacharelado em Ciência e Tecnologia Processamento da Informação Teste de mesa 1 2 3 Com algumas adaptações, pode até mesmo ser usado para demonstrar formalmente que o seu programa está correto. Ex.: demonstre que o trecho de código abaixo troca corretamente os valores de a e b. a = a – b; b = b + a; a = b – a; linha Antes 1 1 2 3 a X X-Y X-Y Y b Y Y X X Bacharelado em Ciência e Tecnologia Processamento da Informação Mais expressões Atividade 3: 1) Crie o projeto CalculaSeno 2) Faça um programa que tome uma variável angulo, do tipo double, e calcule uma aproximação apx para o seno do ângulo dado em radianos a partir do polinômio de Taylor 3) Calcule as aproximações para os seguintes valores de x e compare com o valor dado pela calculadora do Windows: -3.1415 , -1.5706, -0.5, 0, 0.5, 1.5706, 3.1415 Bacharelado em Ciência e Tecnologia Processamento da Informação Funções ou métodos Na atividade anterior, note que a cada vez que queríamos usar a expressão precisávamos copiá-la para usá-la. Será que podemos defini-la em apenas um lugar e usá-la sem precisar copiar? Função ou método: trecho de código que é definido em apenas um lugar e pode ser reutilizado em outros lugares. Bacharelado em Ciência e Tecnologia Processamento da Informação Funções ou métodos Definindo um método para reutilizar a expressão public static double calculaSeno(double x) { double apx = x – x*x*x/6 + x*x*x*x*x/120 – x*x*x*x*x*x*x/5040; return apx; } Bacharelado em Ciência e Tecnologia Processamento da Informação Funções ou métodos • Definindo um método em Java: class Programa { public static tipo nomeDoMetodo(tipo1 arg1, tipo2 arg2, …, tipoN argN) { // código do método return valorDeRetorno; } public static void main(String[] args) { // código do programa } } Bacharelado em Ciência e Tecnologia Processamento da Informação Funções ou métodos • Definindo um método em Java: class Programa { Onde colocar: Entre class Programa { e public static void main public static tipo nomeDoMetodo(tipo1 arg1, tipo2 arg2, …, tipoN argN) { // código do método return valorDeRetorno; } public static void main(String[] args) { // código do programa } } Bacharelado em Ciência e Tecnologia Processamento da Informação Funções ou métodos • Definindo um método em Java: class Programa { O que colocar: As palavras public static vêm antes da definição. public static tipo nomeDoMetodo(tipo1 arg1, tipo2 arg2, …, tipoN argN) { // código do método return valorDeRetorno; } public static void main(String[] args) { // código do programa } } Bacharelado em Ciência e Tecnologia Processamento da Informação Funções ou métodos • Definindo um método em Java: class Programa { public static tipo nomeDoMetodo(tipo1 arg1, tipo2 arg2, …, tipoN argN) { O que colocar: // código do método Depois de public static return valorDeRetorno; vem o tipo de retorno } int, double, char, String... public static void main(String[] args) { // código do programa } } Bacharelado em Ciência e Tecnologia Processamento da Informação Funções ou métodos • Definindo um método em Java: class Programa { public static tipo nomeDoMetodo(tipo1 arg1, tipo2 arg2, …, tipoN argN) { O que colocar: // código do método Depois do tipo de retorno return valorDeRetorno; vem o nome do método. } As regras para o nome são as mesmas que para nome de variável. public static void main(String[] args) { // código do programa } } Bacharelado em Ciência e Tecnologia Processamento da Informação Funções ou métodos • Definindo um método em Java: class Programa { public static tipo nomeDoMetodo(tipo1 arg1, tipo2 arg2, …, tipoN argN) { // código do método O que colocar: return valorDeRetorno; Depois do nome, coloque } os argumentos (variáveis) entre parênteses e separados por vírgula. public static void main(String[] args) { // código do programa } } Bacharelado em Ciência e Tecnologia Processamento da Informação Funções ou métodos • Definindo um método em Java: class Programa { public static tipo nomeDoMetodo(tipo1 arg1, tipo2 arg2, …, tipoN argN) { O que colocar: // código do método Após os argumentos, return valorDeRetorno; um bloco de código, } delimitado por { e } public static void main(String[] args) { // código do programa } } Bacharelado em Ciência e Tecnologia Processamento da Informação Funções ou métodos • Definindo um método em Java: class Programa { public static tipo nomeDoMetodo(tipo1 arg1, tipo2 arg2, …, tipoN argN) { O que colocar: // código do método Se o tipo do seu métoreturn valorDeRetorno; do não for void, ele } deve sempre retornar algo (resultado da execução). public static void main(String[] args) { // código do programa } } Bacharelado em Ciência e Tecnologia Processamento da Informação Funções ou métodos • No final do curso, veremos métodos em mais detalhes. • Por enquanto, saiba que Java já possui vários métodos prontos que você pode utilizar: – System.out.println – imprime na tela e pula linha – System.out.printf – imprime dados formatados – Math.pow(x,y) – calcula xy – Math.sin, Math.cos, Math.tan, … - funções trigonométricas – sc.nextInt(), sc.nextDouble(), … - entrada de dados (precisa “configurar” sc primeiro) Bacharelado em Ciência e Tecnologia Processamento da Informação Atividades • Vamos refazer o roteiro da aula 02 • Atividade desta semana para entregar no Tidia: mesma da semana passada (quem já fez, verifique e melhore o seu código e entregue novamente; quem não fez, faça e entregue)