Prévia do material em texto
PRATICANDO A LINGUAGEM JAVA CONHEÇA O BÊ-Á-BÁ DA LINGUAGEM JAVA PALAVRAS RESERVADAS São identificadores predefinidos pela linguagem e que possuem significados especiais para o interpretador do programa de computador. Geralmente são funções, tipos de dados, entre outras estruturas particulares do interpretador do programa; Esses nomes não podem ser utilizados em variáveis ou constantes. abstract class extends implements null strictfp true assert const false import package super try boolean continue final instanceof private switch void break default finally int protected synchronized volatile byte do float interface public this while case double for long return throw catch else goto native short throws char enum if new static transient ESCREVER NA TELA class Programa { public static void main(String[] args) { System.out.println("Chegou a hora do... HELLO WORLD!"); } } Nesse ponto é definido o nome do programa, o qual recomenda-se que seja IGUAL ao nome do arquivo *.java salvo. No JAVA, esta chamada é conhecida como MAIN (Principal), e é responsável pela execução do programa. Esta chamada imprime o texto escrito entre as aspas para o usuário, gerando uma saída. Este comando desce o cursor automaticamente após a impressão do texto desejado, de forma semelhante a tecla Enter. Observe que toda a instrução no JAVA é finalizada com ponto-e-vírgula. Um programa JAVA pode conter vários blocos de comandos, delimitados por chaves. EXERCÍCIOS 1 - Desenvolva um programa em Java chamado HelloWorld que gere a seguinte saída: +-------------------------------------+ | JAVA | +-------------------------------------+ 2 - Desenvolva um programa em Java chamado HelloWorld2 que gere a seguinte saída: J * A *** V ***** A *** C * COMENTÁRIOS Os comentários permitem aos desenvolvedores documentar o código-fonte desenvolvido, simplificando a compreensão das diversas partes que compõem o código. Estas linhas não são executadas pelo computador. Símbolo Descrição // Comentário de uma linha /* ... */ Comentário de bloco /** ... */ Comentário de documentação VARIÁVEIS Uma variável representa um endereço da memória RAM onde é possível armazenar dados de vários tipos: Numéricos; Texto; Valores lógicos (verdadeiro ou falso), entre outros. A sintaxe de declaração é: <tipo da variável> <nome da variável> Exemplo: int numeroDaConta REGRAS PARA NOMES DE VARIÁVEIS Nunca utilizar palavras reservadas. O primeiro caractere do nome de uma variável deve, obrigatoriamente, ser uma letra ou “_” ou “$”; Os demais caracteres podem ser letras, números ou sublinhado. Nunca utilizar caracteres especiais (@, #, !, *, etc.), espaço em branco ou acentos em nomes de variáveis. Em Java, há diferença entre letras maiúsculas e minúsculas (ex: Num é diferente de NUM). VARIÁVEIS class Programa { public static void main(String[] args) { int var; int $var; int _var; int 1var; int !var; int .var; } Estes são exemplos NÃO VÁLIDOS para nomes de variáveis. Estes são exemplos VÁLIDOS para nomes de variáveis. TIPOS DE DADOS São informados na criação de variáveis e permitem restringir o formato do dado a ser manipulado dentro do programa. Evita a geração acidental de inconsistência dos dados, tanto pelo usuário quanto pelo programa. TIPOS DE DADOS Categoria Tipo Tamanho Intervalo Inteiros byte 1 byte -128 a +127 short 2 byte -32.768 a +32.767 int 4 byte -2.147.483.648 a +2.147.483.637 long 8 byte -9.223.372.036.854.775.808 a +9.223.372.036.854.775.807 Real float 4 byte +1.40239846e-46 a +3.40282347e+38 double 8 byte +4.94065645841246544e-324 a +1.7976931348623157e+308 Caractere char 2 byte \u0000 a \uFFFF String 2 /char Sem restrição Lógico boolean 1Mb True e False ATRIBUIÇÃO DE VALOR O símbolo “=“ permite atribuir um valor a uma variável dentro de um programa. Este valor deve atender o tipo de dado da variável. Pode gerar confusão com a operação de igualdade. Exemplo: Num1 = 10 (Leia-se: Num1 recebe 10) Sexo = ‘M’ (Leia-se: Sexo recebe M) IMPRIMIR VALOR DE VARIÁVEIS Para mostrar no console o valor contido em uma variável, basta colocar o nome dela dentro do comando println: String nome = “Maria”; System.out.println(nome); Para mostrar o valor da variável junto com outros textos, basta colocá-la junto com o resto do texto, separando-os por “+”: System.out.println(“Seu nome é: ” + nome); EXERCÍCIOS (FÁCIL) Crie um programa com as variáveis biscoito e refrigerante do tipo real. Defina um valor a essas variáveis representando seu preço. Imprima na tela a seguinte mensagem: “O preço do biscoito é “ + biscoito + “ e do refrigerante é “ + refrigerante EXERCÍCIOS (FÁCIL) Seguindo o exemplo do exercício anterior, crie variáveis que armazene os valores do seu nome e idade e depois imprima na tela que seu nome é X e sua idade é Y. Utilizando as mesmas variáveis anteriores, imprima na tela uma mensagem dizendo que “Y é a idade do aluno X”. EXERCÍCIOS (FÁCIL) Desenvolva um programa em Java que armazene em variáveis valores do nome = “Ana”, idade = 18, altura = 1.80 e genero = ‘F’. Ao final, imprima as mensagens abaixo no mesmo formato em que elas aparecem: Ana tem 18 anos. É do gênero F e mede 1.80. CONVERSÃO DE VALORES É possível realizar a conversão de valores para diferentes tipos de dados, permitindo mover um valor entre variáveis de diferentes tipos. Por exemplo, é possível mover um valor armazenado como double para uma variável do tipo int; Sintaxe: (novo_tipo) valor_a_ser_convertido. Quando o valor a ser convertido é para um tipo de dado mais abrangente, a conversão é automática. Exemplo: Converter de int para double, pois double contém todos os elementos de int. CONVERSÃO DE VALORES (CONT.) class Programa { public static void main(String[] args) { short i = 10; byte j = (byte) i; System.out.println(i + " | " + j); double x = 1.5; int y = (int) x; System.out.println(x + " | " + y); short a = 123; int b = a; System.out.println(a + " | " + b); } } Observe a sintaxe da conversão, que primeiro informa o novo tipo de dado do valor e em seguida o valor a ser convertido. Neste caso, as casas decimais do tipo double são removidas. Neste caso, o novo tipo de dado engloba o tipo de dado anterior, tornando a conversão implícita. EXERCÍCIOS (FÁCIL) Crie um programa para exibir na tela o valor das variáveis abaixo, fazendo conversão de valores quando necessário. int a = 19; float b = 75.4; long c = b; short d = a; double e = c; MANIPULAR DADOS DE ENTRADA Em Java, para receber um valor informado pelo usuário através do teclado temos que utilizar a classe Scanner. Para isso temos que: importar o pacote onde a classe Scanner se encontra; criar um novo objeto a partir da classe Scanner; Invocar um método de objeto criado de acordo com o tipo do dado que será informado pelo usuário; MANIPULAR DADOS DE ENTRADA import java.util.Scanner; public class UsandoScanner { public static void main(String[] args) { Scanner teclado = new Scanner(System.in); String nome; int senha; System.out.print("Login: "); nome = teclado.nextLine(); System.out.print("Senha: "); senha = teclado.nextInt(); System.out.println(nome + ", Bem Vindo!"); } } Instrução de declaração da variável “teclado”, do tipo “Scanner”, que será inicializada com o resultado da expressão “new Scanner(System.in)” que lê caracteres digitados pelousuário no teclado. Utilização do método “nextInt()” do valor de “teclado”, do objeto “Scanner”, para obter um inteiro digitado pelo usuário. Declaração import que ajuda o compilador a localizar uma classe utilizada no programa. Utilização do método “nextLine()” do valor de “teclado”, do objeto “Scanner”, para obter uma string digitada pelo usuário. EXERCÍCIOS (FÁCIL) Crie um programa que pergunte ao usuário qual o nome dele, qual filme ele gostaria de assistir e em qual sessão. Cada resposta do usuário deve ser armazenada em uma variável diferente. Ao final, imprima na tela uma mensagem no seguinte formato: “FULANO vai assistir ao filme TAL, na sessão das TANTAS horas” EXERCÍCIOS (FÁCIL) Crie um programa que receba informações de dois nomes e um data. Ao final imprima uma mensagem no seguinte formato: “No dia TAL, FULANO casou-se com SICRANO” Crie um programa que receba informações necessárias para imprimir uma mensagem no seguinte formato: “Comprei TANTAS passagens para TAL_LUGAR. Só preciso me preparar para o frio de TANTOS graus.” OPERADORES OPERADORES Para manipular as variáveis de uma aplicação, podemos aplicar os operadores oferecidos pela linguagem de programação utilizada. Assim como a maioria das linguagens, Java possui diversos operadores que são categorizados da seguinte forma: Aritmético (+, -, *, /, %) Atribuição Composta (=, +=, -=, *=, /=, %=) Relacional (==, !=, <, <=, >, >=) Lógico ( &&, || ) OPERADORES ARITMÉTICOS Símbolo Operação Exemplo + Soma a + 2 - Subtração 4 - b * Multiplicação 3 * a / Divisão (Real) 5 / 2 % Resto da Divisão (Inteira) 5 % 2 ( ) Agrupamento 5 * (2 + 3) ++ Incremento Unitário ++a ou a++ -- Decremento Unitário --a ou a-- Obs: O Java efetua cálculos na mesma ordem de precedência da matemática. OPERADORES ARITMÉTICOS (CONT.) Como seria a representação de uma média aritmética em Java: a + b + c + d + e 5 Cuidado! Se não colocar os parênteses para abranger o dividendo, somente a variável “e” será dividida por “5” Em Java: (a + b + c + d + e) / 5 OPERADORES ARITMÉTICOS (CONT.) class Programa { public static void main(String[] args) { int i = 1; System.out.println(i++); int j = 1; System.out.println(++j); System.out.println(i + " | " + j); } } Neste caso, o incremento é realizado APÓS a execução desta instrução. (Saída: 1) Neste caso, o incremento é realizado ANTES da execução desta instrução. (Saída: 2) No final, o valor das variáveis é o mesmo. EXERCÍCIOS (FÁCIL) Faca um programa que leia o nome do usuário e a sua idade e imprima quantos anos ele terá em 2020. A resposta deve ter o formato deste exemplo: “Carlos, em 2020 voce estará com 45 anos”. Faça um programa que leia o nome do usuário, a idade do usuário, o nome da mãe do usuário e a idade da mãe do usuário. O programa devera imprimir na tela quantos anos a mãe do usuário tinha quando ele nasceu. A resposta deve ter o formato deste exemplo: “Carlos, quando você nasceu, Dona Cecilia tinha 27 anos”. EXERCÍCIOS (FÁCIL/MÉDIO) Sabendo que o preço da maçã é R$ 0,50 a unidade, pergunte ao usuário quantas maçãs ele vai querer e diga quanto ele deve pagar. A área de um quadrado é medido pela multiplicação da base pela altura. Crie um programa para calcular a área de um quadrado. EXERCÍCIOS (FÁCIL/MÉDIO) Crie um programa que receba três números (X, Y e Z) e exiba na tela as seguintes operações: a) A soma dos três números; b) A soma de X com a subtração entre Y e Z; c) A multiplicação de Y com a soma de Z e X; d) O resultado de Z módulo de Y; e) A soma entre o resultado da multiplicação de X e Y com o resultado da subtração de Y e Z; EXERCÍCIOS (MÉDIO): ÁREA DO CÍRCULO 4 – Para calcular a área de um círculo, deve-se multiplicar o raio ao quadrado por PI (r2 * PI), onde PI é uma constante igual a 3.14. Crie um programa e defina as variáveis pi e raio, calcule a área dos círculos abaixo e imprima os resultados. Círculo 1 – raio = 5.3 Círculo 2 – raio = 6.3 ATRIBUIÇÃO COMPOSTA Símbolo Operação Exemplo += Adição e Atribuição a += valor -= Subtração e Atribuição a -= valor *= Multiplicação e Atribuição a *= valor /= Divisão e Atribuição a /= valor %= Divisão Inteira e Atribuição a %= valor ATRIBUIÇÃO COMPOSTA (CONT.)class Programa { public static void main(String[] args) { byte a = 10; a += 5; System.out.println(a); byte b = 5; b -= (a – 2); System.out.println(b); byte c = 7; c %= 4; System.out.println(c); } } Neste exemplo, o valor informado é adicionado a variável. Observe que o valor a ser subtraído pode ser o resultado de uma expressão com outras variáveis. OPERADORES DE ATRIBUIÇÃO Os operadores de atribuição, exceto o simples (=), reduzem a quantidade de código escrito. Podemos dizer que esses operadores funcionam como “atalhos” para as operações que utilizam os operadores aritméticos. OPERADORES RELACIONAIS Símbolo Operação Exemplo > Maior que 10 > 2 >= Maior ou igual a 4 >= b < Menor quer 3 < a <= Menor ou igual a b <= 2 == Igual a a == 5 != Diferente de 5 != 7 OPERADORES RELACIONAIS (CONT.) class Programa { public static void main(String[] args) { byte a = 10; byte b = 15; System.out.println(a == b); System.out.println(a != b); System.out.println(a < b); System.out.println(a > b); System.out.println(a <= b); System.out.println(a >= b); } } De acordo com os valores das variáveis acima, cada relação apresentada ao lado retornará TRUE ou FALSE. OPERADORES RELACIONAIS (CONT.) Operações de comparação entre duas variáveis do tipo String não são feitas pelo operador “==“ e deve ser feita da seguinte forma: string1.equals(string2) string1.equalsIgnoreCase(string2) EXERCÍCIOS Crie um programa que compare o valor de duas variáveis do tipo String e identifique a diferença entre as formas de comparação abaixo: string1 == string2 string1.equals(string2) string1.equalsIgnoreCase(string2) OPERADORES LÓGICOS Utilizados especialmente para manipular dados booleanos (lógicos). Trabalham com duas ou mais afirmações (condições); Retornam sempre um valor booleano. Símbolo Operação && E lógico || OU lógico ! Negação Lógica ^ OU Exclusivo OPERADORES LÓGICOS (CONT.) class Aluno { double nota1, nota2, nota3; int falta; void Resultado() { double media = (nota1 + nota2 + nota3)/3; if (media >= 7 && falta < 5) { System.out.println("Aprovado!"); } else { System.out.println("Reprovado!"); } } } Observe a utilização do operador lógico E, analisando as duas condições. EXERCÍCIO O resultado das operações abaixo é Verdadeiro ou Falso? (5 > 8) OU (5 < 6) E (1 < 5) (5 > 8) E (5 < 6) OU (1 < 5) CLASSE MATH - CÁLCULOS PI Constante π Math.PI 3.1415 pow Exponenciaçã o Math.pow(5,2) 25 sqrt Raiz Quadrada Math.sqrt(25) 5 cbrt Raiz Cúbica Math.cbrt(27) 3 EXERCÍCIO (FÁCIL) Faça um programa para ler dois números e mostrar o resultado de um número elevado ao outro; Crie um programa que leia um número e mostre na tela a raiz quadrada desse número; Crie um programa que leia um número e mostre na tela a raiz cúbica desse número; EXERCÍCIO (MÉDIO) Como ficaria o exercício da AreaCirculo utilizando os métodos da classe Math? Lembrando que para calcular a área de um círculo, deve-se multiplicar o raio ao quadrado por PI, ou seja, r2 * PI. Círculo 1 – raio = 5.3 Círculo 2 – raio = 6.3 CLASSE MATH - ARREDONDAMENTOS abs Valor Absoluto Math.abs(-10)10 floor Arredonda para baixo Math.floor(3.9) 3 ceil Arredonda para cima Math.ceil(4.2) 5 round Arredonda aritmeticamente Math.round(5.6) 6 EXERCÍCIO (FÁCIL) Crie um programa que receba um número real e mostre na tela o arredondamento desse número: Para baixo; Para cima; Aritmeticamente; CLASSE MATH – NÚM. ALEATÓRIO Math.random() gera um número aleatório entre 0 e 1. Para gerar um número aleatório entre um intervalo de números deve-se atribuir: numMin + Math.random() * (numMax – numMin) Exemplo entre 5 e 10: 5 + Math.random() * (10-5) EXERCÍCIOS: JOGO DE DADOS Crie um programa utilizando a classe Math que simule uma jogada de dados, onde o resultado deve ser aleatório entre 1 e 6; ESTRUTURAS DE CONTROLE DE FLUXO CONHEÇA AS ESTRUTURAS DE CONTROLE DISPONÍVEIS NO JAVA ESTRUTURAS DE CONTROLE DE FLUXO O Java oferece as principais estruturas de controle de fluxo existentes. Estruturas de Decisão if ... else switch Estruturas de Repetição while do ... while for ESTRUTURA SE A estrutura de decisão SE permite ao desenvolvedor controlar o fluxo de execução de um algoritmo, através da avaliação de uma condição pré-estabelecida Em inglês é chamada de IF Todo SE possui três partes: condição, ações caso verdadeiro e ações caso falso A última parte é opcional e depende do problema proposto ESTRUTURA SE (CONT.) import java.util.Scanner; class Programa { public static void main(String[] args) { int num, resto; Scanner teclado = new Scanner(System.in); num = teclado.nextInt(); resto = num % 2; if(resto == 0) { System.out.println("Par"); } else { System.out.println("Impar"); } } } Neste momento é estabelecida a CONDIÇÃO a ser avaliada A partir deste ponto são definidas as ações a serem executadas, caso a avaliação da condição retorne FALSA Neste ponto são definidas as ações a serem executadas, caso a avaliação da condição retorne VERDADEIRA EXERCÍCIO (FÁCIL) Crie um programa que receba dois número e diga se eles são iguais ou diferentes. Sabendo que a idade mínima para assistir ao Deadpool nos cinemas é 18 anos, crie um programa para saber se a pessoa tem (ou não) idade para assistir ao filme. Estamos em ano de eleição, por isso, crie um programa que pergunte a idade do usuário e diga se ele pode votar ou não. Lembrando que a idade mínima para votar é 16 anos. EXERCÍCIO (FÁCIL/MÉDIO) Crie um programa de uma conta corrente onde o usuário começa com um saldo de 50 reais e o programa pergunta quanto ele quer sacar. Dependendo do valor do saque, o programa deve dizer se ele vai ficar com um saldo positivo ou negativo. Faça um programa que lê 2 valores A e B (inteiros) e informa se A é divisível por B ou não. EXERCÍCIO (FÁCIL/MÉDIO) Em uma empresa, se o funcionário recebe menos de R$1000 de salário, ele terá um adicional de R$150 ao final do mês. Caso contrário, ele não recebe adicional nenhum. Como seria o algoritmo onde o usuário informa quanto ele ganha de salário e o programa informa seu salário real? EXERCÍCIO (FÁCIL/MÉDIO) Crie um programa onde você recebe dois valores de notas (nota1 e nota2), calcula a média entre elas e, ao final, através de uma estrutura de condição, imprima na tela o resultado de Aprovado (caso a média do aluno seja maior ou igual a 7) ou Reprovado (caso não). EXERCÍCIO (MÉDIO/DIFÍCIL) Para aprovar um processo de impeachment, a câmara dos deputados precisou de dois terços dos votos a favor da aceitação. Considerando que são 513 deputados, crie um programa em que o usuário informa o número de votos a favor e ele mostra se o processo foi aprovado ou não; Faça um programa que leia um número inteiro e mostre uma mensagem indicando se este número é par ou ímpar, e se é positivo ou negativo. ESTRUTURA SE (CONT.) É possível trabalhar com mais de uma condição dentro de uma estrutura condicional Para tanto, utiliza-se os operadores lógicos para realizar as operações entre condições Uma vez que a análise de uma condição sempre retorna um valor do tipo lógico ESTRUTURA SE (CONT.) public static void main(String[] args) { boolean a = true; boolean b = false; if (a==true && b==true){ System.out.println("Ambos são Verdadeiro"); } else { System.out.println("Pelo menos um é Falso"); } } Primeiro analiza-se as operações de relacionamento que retornarão um valor lógico cada uma. Com base nos resultados dos relacionamentos, analiza-se o operação lógica “E“, que retornará um valor lógico final. TABELA DA VERDADE a b a E b a OU b NÃO a a XOU b V V V V F F V F F V F V F V F V V V F F F F V F EXERCÍCIOS Modifique o programa de notas anterior considerando que o aluno só terá resultado de Aprovado caso sua média seja maior ou igual a 7 e o número de faltas menor que 5, senão estará Reprovado. ESTRUTURA SE (CONT.) É possível utilizar uma estrutura de decisão dentro de outra já existente Recurso chamado de encadeamento de estruturas Para isso, utiliza-se a sintaxe: If(...){ } else if(...){ } else { } ESTRUTURA SE (CONT.) public static void main(String[] args) { boolean a = true; boolean b = false; if (a==true && b==true){ System.out.println("Ambos são Verdadeiro"); } else if (a==false && b==false) { System.out.println("Ambos são Falso"); } else { System.out.println("Pelo menos um é Falso"); } } Estrutura IF encadeada, pois é como se o segundo IF estivesse dentro do corpo do primeiro. EXERCÍCIO (FÁCIL) Fazer um algoritmo que receba um número e diga se este número está no intervalo entre 100 e 200. Escrever um algoritmo que receba a altura e o sexo de uma pessoa, calcule e mostre seu peso ideal, utilizando as fórmulas abaixo, em que h é a altura da pessoa: Para homens: (72.7 * h) – 58 Para mulheres: (62.1 * h) – 44.7 EXERCÍCIOS (MÉDIO): CARA OU COROA? Crie um programa que simule um jogo de Cara e Coroa, onde ele deve gerar um número aleatório e se o número for Par, considera-se o resultado como Cara, e se for Ímpar, considera-se Coroa; EXERCÍCIO (MÉDIO/DIFÍCIL) Faça um algoritmo que receba quatro notas de um aluno, calcule e mostre a média aritmética das notas e a mensagem de “aprovado” (se a média igual ou superior a 7), “em recuperação” (se a média for maior ou igual a 5 e menor que 7) ou “reprovado” (se a nota for menor que 5). Média = N1 + N2 + N3 + N4 4 0 5 7 10 Reprovado Recuperação Aprovado EXERCÍCIO (DIFÍCIL) Dados três valores (A, B e C) representando as medidas dos lados de um triângulo, escrever se formam ou não um triângulo. Para formar um triângulo, o valor de cada lado deve ser menor que a soma dos outros dois lados. A B C Ex: Se A for menor que B+C, é um triângulo ESTRUTURA ESCOLHA Como visto anteriormente, existem vários casos onde o problema possui mais de uma condição a ser analisada O que é resolvido através do encadeamento de estruturas Entretanto, à medida que a quantidade de condições cresce, o código torna-se de difícil gerenciamento e manutenção Principalmente quando várias condições são baseadas em uma mesma variável Exemplo: Dado um time de futebol, identificar seu estado ESTRUTURA ESCOLHA Para os casos de algoritmos com várias condições baseadas em uma mesma variável, utiliza-se a estrutura de decisão ESCOLHA Em inglês é chamada de SWITCH Todo ESCOLHA possui duas partes: variável e casos ESTRUTURA ESCOLHA ESTRUTURA ESCOLHA (CONT.)import java.util.Scanner; classPrograma { public static void main(String[] args) { int dinheiro; Scanner teclado = new Scanner(System.in); dinheiro = teclado.nextInt(); switch(dinheiro) { case 50: System.out.println("Praia"); break; case 100: System.out.println("Shopping"); break; case 200: System.out.println("Restaurante"); break; default: System.out.println("BUUUUÁÁÁÁÁÁ!"); break; }}} Neste momento é estabelecida a VARIÁVEL a ser avaliada A partir deste ponto são definidas as AÇÕES a serem executadas para este caso Neste ponto são definidos O(S) VALOR(ES) que a variável deve possuir para executar o bloco de ações associado a este caso Para qualquer outro cenário (casos) fora dos definidos acima, utilizamos DEFAULT O BREAK informa que as ações dentro de um caso foram encerradas. EXERCÍCIO (FÁCIL) Crie um programa que receberá um número de 1 a 7 digitado pelo usuário. Dependendo do número informado, o programa irá mostrar na tela o respectivo dia da semana. Exemplo 1 = Domingo 4 = Quarta-feira 7 = Sábado EXERCÍCIO (FÁCIL) Utilizando o comando “Escolha”, crie um programa que peça para digitar um número entre 0 e 5 e identifique qual número ele digitou por extenso. Crie um programa que peça para o usuário digitar uma letra e identifique se ele digitou uma vogal ou uma consoante. Construir um algoritmo que leia o número do mês e exiba o mês correspondente. Em outros casos, exibir a mensagem “Mês Inválido”. Ex: mês 12 = Dezembro; mês 13 = ”Mês Inválido”. EXERCÍCIO (FÁCIL) Crie um programa que exiba as mensagens abaixo como sendo um menu de uma lanchonete. Após o usuário escolher a opção desejada, exiba na tela o preço que ele irá pagar pela opção escolhida: 1) Ovo Frito (R$ 2,00) 2) Pão com Manteiga (R$ 1,50) 3) Bolo de Laranja (R$ 2,50) 4) Pão de Queijo (R$ 3,50) EXERCÍCIOS (MÉDIO) Elaborar um algoritmo que receba um valor em reais e uma opção de câmbio. Calcule e mostre o valor convertido para a moeda de destino. Mostre a mensagem “Opção Inválida” quando não for escolhida nenhuma das opções. EXERCÍCIO (DIFÍCIL) Uma empresa aumentará o salário dos seus funcionários de acordo com a sua categoria. Além disso, terão um adicional de acordo com seu salário base. O aumento seguirá a seguinte regra: SALÁRIO ADICIONAL Acima de 800 100,00 Entre 600 e 800 150,00 Abaixo de 600 200,00 CATEGORIA AUMENTO A e F 10% B e E 15% C e D 20% Crie um programa para executar esses cálculos. ESTRUTURAS DE REPETIÇÃO ESTRUTURAS DE REPETIÇÃO As Estruturas de Repetição permitem definir blocos de ações que serão executadas de forma repetitiva, enquanto o resultado de uma expressão condicional for verdadeiro Em outras palavras, é possível definir blocos de instruções que são executados de forma contínua A execução contínua é interrompida quando o retorno de uma condição é Falso Também conhecidas como Laços ESTRUTURA ENQUANTO O WHILE é um laço (loop) condicional deve ser utilizado quando o número de repetições for desconhecido, mas sabe-se quando parar de repetir. Este tipo de estrutura, também chamado de estrutura de repetição com teste no início: se o teste for verdadeiro, a lista de comandos é executada. Ao final da execução, a condição é avaliada novamente. Isto se repete até que a condição seja falsa. ESTRUTURA ENQUANTO ESTRUTURA ENQUANTO import java.util.Scanner; class Programa { public static void main(String[] args) { int numero = 1; while(numero <= 10) { System.out.println(numero); numero += 1; } } } Neste ponto é estabelecida a CONDIÇÃO a ser avaliada a cada ciclo do laço. Enquanto o retorno for VERDADEIRO, as ações deste bloco serão executadas. Esta instrução especial é chamada de INCREMENTO. Ela funciona como um contador, garantindo a mudança do valor da variável As chaves delimitam o bloco de ações a serem executadas de forma contínua, enquanto a avaliação da condição retornar VERDADEIRA EXERCÍCIO (FÁCIL) Crie um programa que solicite para o usuário digitar uma letra e repita esse processo enquanto o usuário não digitar a letra ‘F’. Crie um programa que pergunte para o usuário “Quem é esse pokemon?” e repita esse processo enquanto ele não responder “pikachu”. EXERCÍCIO (FÁCIL) Crie um programa em que o usuário digite um número e o programa imprima na tela a mensagem “Exercício Fácil” o dobro do número de vezes que o usuário informou. Crie um programa que imprima todos os números entre 100 e 150. EXERCÍCIO (MÉDIO) Crie um programa em que o usuário digite um número e o programa imprima na tela a contagem regressiva desse número até zero. Crie um programa que imprima todos os número pares entre 100 e 150. Crie um programa que solicite dois número para o usuário e repita esse processo enquanto os números informados forem diferentes. EXERCÍCIO (DIFÍCIL) Escrever um algoritmo que leia um conjunto de números inteiros. Ao digitar o valor 0 (zero), o algoritmo pára de repetir e indica o maior dos valores digitados. Crie um programa para ler números informado pelo usuário. Enquanto o usuário digitar um número par, o sistema continua executando. Ao final, informe quantas vezes o usuário digitou um número par. EXERCÍCIO (DESAFIO): FATORIAL Crie um programa que calcule o fatorial de um número. Lembrando que fatorial é o produto dos números inteiros consecutivos de 1 até determinado número inteiro. Ex: 5! = 5 * 4 * 3 * 2 * 1 = 120 ESTRUTURA FAÇA...ENQUANTO A estrutura de repetição WHILE possui como característica fazer o teste condicional antes de executar seu bloco de repetição; Isso faz com que o código do bloco nem seja executado caso a condição não seja satisfeita; Uma outra forma de implementar o laço ENQUANTO é utilizando a estrutura FAÇA...ENQUANTO: DO { ... } WHILE ( condição ); Nessa forma, o código será executado pelo menos uma vez, pois a condição de repetição só será analisada no final da estrutura. ESTRUTURA FAÇA...ENQUANTO ESTRUTURA FAÇA...ENQUANTO public static void main(String[] args) { Scanner entrada = new Scanner(System.in); String user; do { System.out.println("Login: "); user = entrada.nextLine(); } while (!user.equals("adm")); System.out.println("Acesso Permitido"); } Ao final, a condição será testada: caso TRUE, o bloco repetido; caso FALSE, encerra- se o laço. Tudo que está dentro do bloco DO será executado pelo menos uma vez. EXERCÍCIO (FÁCIL) Desenvolva um programa que pergunte um número ao usuário. Se o número for maior que 10 ele encerra o programa, senão ele repete. Desenvolva um programa que pergunte o nome do usuário. Caso o campo informado seja vazio (“ ”), o código repete. EXERCÍCIO (MÉDIO) Crie um programa de lanchonete que exiba o menu abaixo e pergunte para o usuário o que ele deseja pedir. Sempre que ele fizer um pedido, o valor do produto deve ser somado ao valor total da conta. Quando o usuário solicitar a conta, o sistema deve encerrar mostrando quanto o usuário irá pagar. Opção Descrição Preço (R$) 1 Salgado 2.50 2 Pizza (Brotinho) 3.00 3 Refrigerante (Lata) 3.00 4 Suco (Copo Grande) 1.50 5 Pedir Conta EXERCÍCIO (MÉDIO): QUE NÚMERO ESTOU PENSANDO Crie um programa que armazenará um valor inteiro qualquer (ex: 5) e perguntará pro usuário: “Que número estou pensando?”. Quando o usuário acertar o valor, o programa deve encerrar. O usuário deve digitar um número pelo teclado e enquanto ele não acertar o valor armazenado, o sistema deve pedir para tentar novamente. EXERCÍCIO (MÉDIO/DIFÍCIL) Crie um algoritmoque execute as atividade de um caixa do cinema onde você escolhe o filme que quer assistir e ele lhe mostra as sessões disponíveis. Após escolher o filme e a sessão, o sistema emite um “ingresso” e repete o código até que o número de ingressos vendidos seja maior que 5. Exemplo de ingresso: Sessões 17h30 20h15 Sessões 14h30 17h15 Sessões 21h30 INGRESSO Filme: Deadpool Sessão: 21h30 EXERCÍCIO (DIFÍCIL) Crie um algoritmo de um sistema de carteira de estudante. Para isso, considere que o aluno terá um saldo inicial de R$ 5.00 de crédito disponível na carteira e depois ele pode escolher umas das opções abaixo: Adicionar Crédito – Pergunta quanto ele quer adicionar de crédito e some esse valor ao saldo; Pagar passagem – Pergunta de qual ônibus ele deseja pagar passagem (Maiobão – 2.90, Alemanha – 2.50, Ribamar – 3.10) e desconte do saldo; Mostrar saldo – exibe o saldo atual na tela; Sair – finaliza o programa. EXERCÍCIO (DIFÍCIL) Crie um programa para cadastro de alunos. Este programa deve ter um menu com as seguintes opções: Cadastrar – Pergunta pro usuário o Nome, a Idade e o Telefone dele e armazenas essas informações. Alterar – Pergunta qual atributo ele quer alterar (nome, idade ou telefone) e depois pergunta o novo valor que substituirá o anterior. Mostrar na Tela – Mostra todos os dados do aluno. Concluir – sai do laço de repetição e finaliza o programa dizendo “Cadastro realizado com sucesso!” ESTRUTURA PARA Observe que vários exemplos da estrutura ENQUANTO utilizam uma variável que funciona como contador Determinando a quantidade de ciclos a serem executados Para estes casos, existe uma estrutura de controle que permite ao desenvolvedor definir o contador como variável local, conhecida como PARA Em inglês é chamada de FOR ESTRUTURA PARA Funcionamento da estrutura de repetição PARA ESTRUTURA PARA (CONT) class Programa { public static void main(String[] args) { for(int i = 1; i <= 10; i++) { System.out.println(i); } } } Neste ponto é informada a variável que terá o seu valor alterado a cada ciclo, com o valor inicial. Neste ponto é definido o valor do INCREMENTO da variável. Neste ponto é definida a condição que será verificada a cada laço. EXERCÍCIO (FÁCIL) Fazer um algoritmo que mostre a seguinte série: 10, 20, 30, 40, ..., 500. Crie um programa que conte de 2 em 2 até determinado número informado pelo usuário. Fazer um algoritmo que receba um número N, some todos os números entre 1 e N, e mostre o resultado. EXERCÍCIO (MÉDIO) Elaborar um programa que apresente os resultados da soma dos valores impares situados na faixa numérica de 50 até 70. Crie um algoritmo onde o usuário digita um número e o programa mostrar na tela os 10 número pares após o número informado. EXERCÍCIOS (MÉDIO) Crie um programa utilizando o laço de repetição PARA que pedirá para o usuário digitar um número por determinado número de vezes (ex: 3 vezes). Cada vez que o usuário digitar um número, este deve ser somado com os anteriores. Ao final, mostre na tela o resultado da somatória os números digitados. Digite um número: 5 Digite um número: 3 Digite um número: 8 Somatória: 16 EXERCÍCIO (MÉDIO/DIFÍCIL) Escreva um programa em que imprime na tela os números de 1 a 100 exceto os números múltiplos de 3. Construir um programa que apresente todos os valores numéricos (a partir de 1) divisíveis por 4 e menores que 200. Escrever um algoritmo que leia um número N e, em seguida, pergunte um número ao usuário N vezes. Ao final, mostre o maior digitado. EXERCÍCIO (MÉDIO/DIFÍCIL) Sabendo que a lista oficial de um time de futsal consta, além de outros dados, o peso e a idade de 5 jogadores, escreva um algoritmo que leia o peso e a idade de cada jogador, calcule e mostre o peso médio deste time e a idade média entre todos os participantes. EXERCÍCIO (DIFÍCIL) João tem 1,50 m e cresce 2 centímetros por ano, enquanto Maria tem 1,10 m e cresce 3 centímetros por ano. Construa um programa que calcule e imprima quantos anos serão necessários para que Maria seja maior que João. Foi feita uma pesquisa entre os 5 habitantes de uma região. Foram coletados os dados de idade, sexo e salário. Faça um programa que informe: a média de salário do grupo; maior e menor idade do grupo; quantidade de mulheres com salário até R$ 200. EXERCÍCIO (DESAFIO) ADIVINHAÇÃO Crie um programa para brincar de adivinhação com o usuário, onde o computador terá um número misterioso em uma variável e o usuário deve adivinhar que número é esse. Quando o usuário tentar adivinhar o número misterioso, o programa deve analisar se ele acertou ou não. Caso ele tenha acertado, dê-lhe os parabéns. Caso ele erre, informe se o número misterioso é maior ou menor do que o número dito pelo usuário. O programa deve repetir até que o usuário acerte o número misterioso. EXERCÍCIO (DESAFIO) PAR OU IMPAR? Crie um programa para disputar “Par ou Impar” com o usuário. Para isso, pergunte ao usuário se ele quer “Par” ou “Impar”. Depois peça que ele digite um número. Com essas informações e considerando que o computador sempre jogará o número 2, diga quem ganhou: o usuário ou o computador. EXERCÍCIO (DESAFIO) PEDRA, PAPEL, TESOURA? Crie um programa que jogue “pedra, papel, tesoura” com o usuário. Para isso, considere que o programa sempre vai escolher “pedra”. Então, pergunte a escolha do usuário e mostre o resultado. Lembrando que, caso o usuário também escolha “pedra”, o algoritmo deve repetir até que haja um ganhador. PC: “Pedra” Usuário: “Pedra” Ganhador: “Empate” PC: “Pedra” Usuário: “Papel” Ganhador: Usuário PC: “Pedra” Usuário: “Tesoura” Ganhador: PC MODULARIZAÇÃO APRENDA A DEFINIR BLOCOS DE COMANDOS REUTILIZÁVEIS EM JAVA MODULARIZAÇÃO Ao se deparar com um problema complexo, deve-se buscar visualizá-lo como um conjunto de problemas mais simples: Cada problema elementar é tratado como um módulo Esses módulos são chamados pelo programa principal toda vez que o código dentro deles deve ser executado Um mesmo módulo pode ser chamado várias vezes pelo programa principal, sendo assim reutilizáveis MODULARIZAÇÃO (CONT.) Existem dois tipos de módulos disponíveis: Procedimento Função Cada um deles possui utilização específica na montagem de programas mais complexos Como um módulo é, em sua essência, um programa, as características do primeiro são as mesmas do segundo Pode possui uma ou mais entradas; Sempre efetua um processamento; e Gera uma ou mais saídas. PROCEDIMENTO Um procedimento é um módulo que permite agrupar rotinas de comandos. Essas rotinas executam um conjunto de instruções e não gera um valor como saída; Ela pode ou não possuir entradas. Um procedimento é utilizado quando necessita-se executar um bloco de comandos várias vezes ao longo da execução do algoritmo. Nesse cenário, esse bloco não retorna nenhum valor. PROCEDIMENTO (CONT) class Programa { static void responder() { System.out.println(“Ta favorável!"); } public static void main(String[] args) { System.out.println(“Ta tranquilo?"); responder(); System.out.println(“E agora? Ta tranquilo?"); responder(); } } Neste ponto um procedimento com o nome RESPONDER está sendo criado. Não há entrada para essa rotina. Neste momento são inseridos os comandos que fazem parte da rotina. A palavra VOID informa que esse bloco de comando não retorna nenhum valor para o programa principal.. Para executar o procedimento, basta chamá-lopelo seu nome. Ao ser chamado, todos os comandos inseridos dentro do procedimento são executados. PROCEDIMENTO (CONT.) Um procedimento pode receber um ou mais valores do programa principal, e utilizar como entrada para o código interno Essas variáveis são chamadas de parâmetros de entrada O escopo desses parâmetros é local, ou seja, só existem dentro do procedimento Assim como uma variável, o parâmetro deve ter o seu tipo de dado definido PROCEDIMENTO (CONT.) class Programa { static void escrevaNome(String nome){ System.out.println("O nome é: " + nome); } public static void main(String[] args) { System.out.println("Passando um nome:"); escrevaNome(“Jose"); System.out.println("Passando outro nome:"); escrevaNome(“Maria"); } } Observe que agora o procedimento possui um parâmetro de entrada, neste exemplo NOME do tipo String. Observe que o parâmetro de entrada é utilizado como uma variável dentro do procedimento. Para executar o procedimento, basta chamá-lo pelo seu nome, seguido do valor desejado para o parâmetro. Veja que o código se adapta de acordo com o valor passado. EXERCÍCIO (FÁCIL) Crie um procedimento chamado lembrete() que imprima na tela a mensagem abaixo sempre que ele for chamado no programa principal. “Esse procedimento é muito fácil!” Crie um procedimento para imprimir a data do seu aniversário sempre que for chamado no programa principal. Crie um procedimento que receba um número inteiro e mostre na tela se ele é par ou impar. EXERCÍCIO (FÁCIL) Crie um procedimento que receba dois textos e escreva na tela os 2 textos juntos. Crie um procedimento que receba três números inteiros e imprima na tela a soma desses valores. Crie um procedimento que receba o nome de dois super-heróis e imprima na tela uma mensagem no seguinte formato: “XXX é mais forte que YYY” EXERCÍCIO (MÉDIO) Crie um procedimento que calcule o desconto de um salário, onde o programa principal passa o valor do salário e o procedimento desconta 15% desse valor. Crie um procedimento que receba um número inteiro X e imprima na tela a frase “Sexta tem prova” o número de vezes de X. EXERCÍCIOS (MÉDIO) Crie um programa que simule um GPS de carro utilizando funções e procedimentos para direcionar o usuário e guie-o na figura abaixo até o posto de gasolina, apenas chamado as funções e procedimentos criados. Exemplo de função: void virarDireita(int distancia){ System.out.println(“A ”+ distancia +“ metros, vire a direita.”); } 300m 100m 250m 100m 450m EXERCÍCIO (DIFÍCIL) Elaborar uma calculadora com procedimentos para as seguintes operações: soma, subtração, multiplicação, divisão, potenciação, raiz quadrada, raiz cúbica, arredondamento para cima, arredondamento para baixo e gerar número aleatório. O algoritmo terá um menu de escolha. O usuário escolhe uma das operações e digita os valores necessários para serem calculados. FUNÇÃO Um função é um módulo que permite agrupar blocos de comandos que SEMPRE retornam um valor para o programa principal Esses blocos executam um conjunto de instruções e pode ou não possuir entradas Uma função é utilizada quando necessita-se executar um bloco de comandos que geram um valor a ser utilizado pelo programa principal Geralmente automatizando cálculos complexos FUNÇÃO (CONT) class Programa { static double calcularMedia(double nota1, double nota2){ double media; media = (nota1 + nota2) / 2; return media; } public static void main(String[] args) { double valorRetornado; valorRetornado = calcularMedia(10, 8); System.out.println("Primeiro: " + valorRetornado); valorRetornado = calcularMedia(5, 3); System.out.println("Segundo: " + valorRetornado); } } Neste ponto uma função com o nome CALCULARMEDIA está sendo criada. Observe que ela possui dois parâmetros de entrada. Neste ponto é definido o TIPO DE DADO do RETORNO da função. Em outras palavras, essa função retornará ao programa principal algum valor do tipo DOUBLE. Neste ponto é colocado o bloco de comandos que gerará o resultado da função. Observe que o comando RETURN é utilizado para informar o que será retornado pela função. A chamada da função é feita da mesma forma que o procedimento. EXERCÍCIO (FÁCIL) Crie uma função para calcular o triplo de um número e devolver o resultado; Crie uma função que receba dois números inteiros e devolva verdadeiro ou falso se eles são iguais. Desenvolva uma função que recebe como parâmetro o mês atual e retorna quantos meses faltam para o final do ano. EXERCÍCIO (FÁCIL) Fazer uma função que receba o esporte de um aluno por parâmetro e retorne o ginásio em que ele vai competir, de acordo com a tabela abaixo: EXERCÍCIO (FÁCIL) Desenvolva uma função que recebe o ano de nascimento do usuário e retorna a sua idade. Faça o cálculo usando o ano atual. Desenvolva uma função que recebe dois números inteiros como parâmetro, e retorna o resto da divisão do primeiro parâmetro pelo segundo. Crie uma função que receba um número de 1 a 5 e devolva o nome desse número por extenso. EXERCÍCIO (MÉDIO) Crie uma função que receba três números e retorne o maior deles. Crie duas funções para converter uma temperatura Celsius em Fahrenheit e outra de Fahrenheit para Celsius: De Celsius para Fahrenheit = (ºC * 1.8) + 32 De Fahrenheit para Celsius = (ºF – 32) / 1.8 EXERCÍCIO (MÉDIO) Fazer uma função que receba a idade de um nadador por parâmetro e retorne a categoria desse nadador, de acordo com a tabela abaixo: EXERCÍCIO (DIFÍCIL) Crie uma função que verifica se um número é divisível por 2 e por 3 e retorne a resposta. Crie uma função que escreva um número inteiro de entrada por extenso. Crie um programa que conte de 1 até 10. Contudo, se durante a contagem um número for par, ele chamará a função para que esse número par seja exibido por extenso. EXERCÍCIO (EXTRA) Crie um sistema de venda de passagens de um ônibus. Para isso, considere um vetor de tamanho 10 representando as poltronas do ônibus. O sistema deve apresentar um menu com as opções “vender passagem”, “exibir poltronas” e “sair”. Cada opção do menu deve ser feito em uma função. Na função “vender passagens” o usuário diz qual poltrona ele quer e o sistema verifica se ela está disponível. Na função “exibir poltronas” o sistema lista todas as 10 poltronas e indica quais estão ocupadas. Por fim, o sistema fica repetindo até que as 10 poltronas sejam vendidas ou até o usuário chamar a função “sair”. EXERCÍCIO (EXTRA) Crie DOIS vetores referente a personagens de um jogo. Cada personagem deve ter os atributos: Vida (5), Guerreiro (2), Arqueiro (2), Magos (2); Crie um menu que apresente ao usuário as opções de usar Guerreiros, Arqueiros, Magos; No início, o programa pergunta qual tipo de soldado cada jogador irá utilizar naquele round: Se ambos os jogadores escolherem o mesmo tipo de soldado, ambos tomam 2 de dano; Se um jogador escolher um tipo que tem vantagem sobre o outro, ele causa 2 de dano no inimigo. Guerreiro Arqueiro Mago