Baixe o app para aproveitar ainda mais
Prévia do material em texto
APOSTILA DA DISCIPLINA DE ALGORITMOS E PROGRAMAÇÃO I Profª Cristina D’Ornellas Filipakis Profª Madianita Bogo Marioti Palmas - TO 2015 SUMÁRIO 1 Conceitos básicos de lógica de programação e algoritmos ........................................................... 2 2 Variáveis ....................................................................................................................................... 3 3 JLive - Instruções Básicas ............................................................................................................. 4 4 Estrutura de decisão – if – if/else .................................................................................................. 8 5 Estrutura de Repetição (laço) - while .......................................................................................... 15 6 Estrutura de Repetição (laço) - for .............................................................................................. 23 7 Vetor – Matriz Unidimensional .................................................................................................. 25 8 Matrizes Bidimensionais ou variáveis indexadas bidimensionais .............................................. 29 2 1 Conceitos básicos de lógica de programação e algoritmos Na filosofia, a lógica é a área que trata das formas do pensamento em geral e das operações intelectuais que visam à determinação do que é verdadeiro ou não. A lógica estuda e ensina a colocar “ordem no pensamento”, seja para as ações a serem tomadas em nossa vida, seja para criar um programa de computador. Exemplos de raciocínios lógicos: Todo mamífero é um animal. Todo gato é um mamífero. Logo, todo gato é um animal. João é cientista. Todo cientista é estudioso. Logo, João é estudioso. O ser humano, mesmo sem estruturar formalmente seu raciocínio, utiliza lógica para realizar as suas atividades, ou seja, existe uma sequência para a realização de determinadas tarefas. Por exemplo, para fazer um pão de queijo é preciso seguir determinados passos, que são: 1. Separar os ingredientes: polvilho, sal, leite, óleo, ovo, queijo ralado 2. Colocar o polvilho em uma tigela grande 3. Aquecer o sal, o leite e o óleo 4. Escaldar o polvilho com essa mistura e mexer até ficar uniforme 5. Acrescentar os ovos e mexer 6. Enrolar os pães e colocar em uma assadeira 7. Levar ao forno para assar 8. Retirar os pães de queijo do forno A lógica é aplicada a várias ciências (Psicologia, Filosofia etc.), entre elas, a Informática, sendo utilizada em todas as suas áreas, desde a construção de hardware até a programação de aplicativos. Na informática, a lógica consiste na organização e no planejamento das instruções em um algoritmo, a fim de viabilizar a implantação de um programa (HOUAISS, on-line). A lógica de programação consiste no raciocínio lógico utilizado para a organização de símbolos e instruções na programação de computadores. O resultado destes símbolos e instruções organizadas é o algoritmo, que consiste em uma sequência finita de instruções para a execução de uma tarefa e resolução de um problema. Todo algoritmo, assim como os programas de computadores que serão vistos posteriormente, apresentam a seguinte estrutura: 3 Entrada(s): informações necessárias para a obtenção das saídas, a partir do processamento. Processamento: operações realizadas nas entradas para obtenção da saída. Saída: resultado do algoritmo, informação resultante do processamento. 2 Variáveis O computador possui uma área de armazenamento conhecida como memória. A memória do computador pode ser entendida como uma sequência finita de espaços de armazenamento que, num dado momento, guardam algum tipo de informação, tais como números, uma letra, uma palavra, uma frase, entre outros. O computador, para poder trabalhar com estas informações, precisa saber a localização da memória em que o dado está armazenado. Fisicamente, cada posição de memória possui um endereço único (representado por um número hexadecimal) que identifica a localização da informação. Exemplo: Endereço Físico Informação 3000: B712 “João” 2000: 12EC 12345 A manipulação das posições de memória da máquina é facilitada com a utilização de variáveis, pois estas permitem que, ao invés de trabalhar diretamente com os números hexadecimais, seja possível dar nomes diferentes às posições de memória reservadas para a utilização durante a execução do programa. Desta forma, o programador visualiza o exemplo acima da seguinte maneira: Variável Informação Nome “João” Código 12345 As variáveis representam valores desconhecidos que podem ser alterados de acordo com a situação, isto é, armazenam dados temporariamente na memória RAM do computador, no decorrer da resolução dos problemas. 2.1 Tipos de variáveis Tipo de Variável (*) Descrição int Qualquer valor pertencente ao conjunto dos números inteiros (valores exatos, sem casas decimais). double Qualquer valor pertencente ao conjunto dos números reais. char Representa apenas um caractere, ou seja, uma letra. * A tabela apresenta apenas os tipos que serão utilizados na disciplina. 4 2.2 Declaração de Variáveis – Definição dos Tipos de Dados O programador deve reservar uma área de memória para guardar todos os valores que serão lidos e calculados antes da definição da sequência de instruções no programa, para que estes possam ser utilizados sempre que necessário, no decorrer da execução. Esta ação é denominada de “declaração de variáveis”, na qual é informado o tipo de dado que será armazenado (seção 2.1) e qual o nome que será associado ao endereço de memória do mesmo. A definição correta do tipo de dado para ser guardado em uma área de memória, representada pela variável, é de fundamental importância para solucionar satisfatoriamente o problema e para o funcionamento adequado do programa. Para desenvolver um algoritmo é necessário que se conheça o tipo de informação (dados) que será utilizada na resolução do problema. Assim, será possível definir os tipos adequados para as variáveis que serão utilizadas. Na declaração das variáveis, além da definição dos tipos, devem-se definir os nomes das variáveis que serão utilizadas no programa, prestando atenção nas seguintes especificações: devem começar por um caractere alfabético; podem ser seguidos por mais caracteres alfabéticos ou numéricos; não devem ser usados caracteres especiais (espaço, . , @, $, / etc). letras maiúsculas e minúsculas são consideradas diferentes (sensitive case). 3 JLive - Instruções Básicas Estrutura Básica dos Algoritmos, usando o JLive: Declaração de Variáveis Instruções do algoritmo: Entrada de dados Processamento Saída Declaração de variáveis (reservar área de memória) - Caractere (char): char nomeDaVariavel; ou char nomeDaVariavel1, nomeDaVariavel2, nomeDaVariavel3; - Inteiro (int): int nomeDaVariavel; ou int nomeDaVariavel1, nomeDaVariavel2, nomeDaVariavel3; - Real (double): double nomeDaVariavel; ou double nomeDaVariavel1, nomeDaVariavel2, nomeDaVariavel3; 5 Entrada de Dados - Caractere (char): nomeDaVariavel = leiaChar("Texto que sairá na tela:"); - Inteiro (int): nomeDaVariavel = leiaInt("Texto que sairá na tela:"); - Real (double): nomeDaVariavel = leiaDouble("Texto que sairá na tela:"); Saída de Dados - imprima(nomeVariavel); - imprima(“Texto que sai na tela”); - imprima(“Textoque sai na tela ” + nomeVariavel ); - imprima(“Texto que sai na tela ” + nomeVariavel + “Texto que sai na tela ” + nomeVariavel); Operadores Aritméticos: utilizados na realização dos cálculos matemáticos. Operador Função + Adição - Subtração * Multiplicação / Divisão % Resto da divisão (Módulo) ++ Incrementa 1 ao operando -- Decrementa 1 do operando Um exemplo de problema que pode ser resolvido por um computador é a realização do cálculo da soma de dois números inteiros. Nesse caso o algoritmo seria o seguinte: int num1, num2, soma; num1 = leiaInt("Entre com o primeiro número"); num2 = leiaInt("Entre com o segundo número"); soma = num1 + num2; imprima(“Resultado da soma = ”+soma); Declaração de Variáveis Entrada de Dados Processamento Saída 6 Na execução o algoritmo solicita os seguintes dados ao usuário (que digitou os números 5 e 7, para num1 e num2, respectivamente): A saída apresentada na tela é a seguinte: Outro exemplo que pode ser resolvido por um computador é o cálculo da área de um triângulo, sendo que a área do triângulo é igual a base vezes a altura dividido por dois. double base, altura, area; base = leiaDouble("Entre com a base:"); altura = leiaDouble("Entre com a altura:"); area = (base*altura)/2; imprima(area); Exercícios de fixação 1. Escreva um algoritmo para calcular a área de um quadrado, sendo que o cálculo da área é feito elevando-se ao quadrado a medida de um lado. 2. Escreva um algoritmo para calcular quantas ferraduras são necessárias para equipar todos os cavalos comprados para um haras. 3. Uma professora precisa calcular a média de um aluno que realizou duas provas. Escreva um algoritmo que leia duas notas, calcule e imprima a média aritmética do aluno. 4. Uma professora precisa calcular a média de um aluno. O aluno realizou 3 provas, sendo que a primeira prova tem peso 1, a segunda tem peso 2 e a terceira prova tem peso 3. Escreva um algoritmo para calcular e apresentar a média ponderada do aluno. 7 5. Uma doceira levou pães de mel para vender em uma feira de gastronomia. Escreva um algoritmo que calcule o lucro obtido pela doceira na feira, baseando-se na quantidade vendida e nos preços de custo e de venda da unidade, considerando que o valor gasto pela doceira com o aluguel do stand foi de R$ 500.00. 6. Escreva um algoritmo que leia três números inteiros e positivos (A, B, C) e calcule a seguinte expressão: 𝐷 = 𝑅+𝑆 2 , onde 𝑅 = (𝐴 + 𝐵)2 e 𝑆 = (𝐵 + 𝐶)2. 7. Antes do racionamento de energia ser decretado, quase ninguém falava em quilowatts, mas agora, todos a incorporaram a seu vocabulário. Sabendo que cada quilowatt de energia custa um centésimo do salário mínimo, escreva um algoritmo que receba o valor do salário mínimo e da quantidade de quilowatts gasta em uma residência, calcule e imprima o valor pago pela residência em questão. 8. Escreva um algoritmo que leia a idade de uma pessoa expressa em anos, meses e dias e mostre-a expressa apenas em dias. Considere o ano com 365 dias e o mês com 30 dias. 9. Escreva um algoritmo que leia o tempo de duração de um evento expresso em segundos e mostre-o expresso em horas, minutos e segundos. 10. Calcular a quantidade de litros de leite necessários e o custo para comprar o leite para alimentar as crianças uma determinada creche que contém de três salas, sendo que é fornecida a quantidade de crianças de cada sala e sabendo-se que: - cada litro de leite alimenta 5 crianças; - o litro de leite custa R$ 2.80. 11. Escreva um algoritmo que leia a quantidade de homens e de mulheres de uma turma e apresente: - o total de pessoas na turma; - o percentual de mulheres; - o percentual de homens. 12. Uma pessoa precisa calcular a quantidade de cigarros que fumou na vida e a quantidade de dinheiro que já gastou com a compra de cigarros, baseando-se nos seguintes dados: o número de anos que ela fuma, o nº de cigarros fumados por dia e o preço de uma carteira de cigarros. Escreva um algoritmo que resolva esse problema, considerando que: - 01 ano tem 365 dias; - 01 carteira tem 20 cigarros. 13. Escreva um algoritmo que calcule e imprima o valor do volume de uma lata, utilizando a fórmula VOLUME = 3,14159 * RAIO2 * ALTURA. 14. A partir da distância entre a cidade origem e destino (em km), calcule quantas horas uma pessoa leva para fazer uma viagem, considerando que a velocidade média é 80 km/h. 15. Escreva um algoritmo que leia dois números inteiros e guarde em duas variáveis A e B. Depois, troque os valores das variáveis e apresente os valores trocados. 8 16. Escreva um algoritmo que, a partir da distância entre as cidades origem e destino, calcule quantos litros de gasolina serão consumidos e quanto João vai gastar para realizar uma viagem até a casa de sua tia. Considerando que: a) o carro de João tem um consumo médio de 10 km por litro; b) o preço da gasolina no posto em que João abastece o carro é de R$ 3.00. Baseando-se nesses fatos, elabore um algoritmo que calcule as informações desejadas. 17. O custo ao consumidor de um carro novo é a soma do custo de fábrica com a percentagem do distribuidor e dos impostos (aplicados ao custo de fábrica). Supondo que a percentagem do distribuidor seja de 28% e os impostos de 45%, escrever um algoritmo que leia o custo de fábrica de um carro e escreva o custo ao consumidor. 18. A partir da quantidade de doces fabricados por uma doceira, calcular a quantidade de pacotes de açúcar que foram gastos para atender uma determinada encomenda, sabendo-se que a cada 100 doces fabricados são gastos 2 (dois) quilos de açúcar e que um pacote de açúcar tem 5 quilos. 19. Calcular a quantidade de latas de tinta necessárias e o custo para pintar uma determinada casa de três cômodos, sendo que são fornecidas as metragens de cada cômodo (em m2) e sabe-se que: - Cada litro de tinta pinta 10 metros quadrados (m2) - A lata de tinta custa R$ 20,00 - Cada lata contém 5 litros. 4 Estrutura de decisão – if – if/else Uma estrutura de decisão, também chamada de estrutura de seleção, é utilizada quando é necessário verificar condições para a execução de uma determinada instrução ou sequência de instruções. A finalidade dos comandos de decisão é testar uma condição e realizar uma ação se a condição for verdadeira, permitindo efetuar um desvio no processamento, caso seja falsa. Operadores Relacionais: utilizados em condições (estruturas de decisão, de repetição etc.) Operador Função = = Igual a > Maior que < Menor que >= Maior ou igual que <= Menor ou igual que != Diferente de 9 Seleção Simples (comando if) Na instrução if (se), se a condição for verdadeira, serão executadas as instruções que estiverem escritas dentro do bloco do if. if (<condição>) { <instrução(ões) executada(s) apenas se a condição for verdadeira> } Exemplo: A partir de duas notas de um aluno, construa um algoritmo que calcule e apresente a média aritmética do aluno e, caso a média seja inferior a 6.0, informe que esse aluno deverá fazer exame. double nota1, nota2, media; nota1 = leiaDouble("Entre com a nota 1"); nota2 = leiaDouble("Entre com a nota 2"); media = (nota1 + nota2)/2; imprima("Media = " + media); if(media < 6) { imprima("\n O aluno terá que fazer exame!"); } Seleção Composta (if .. else) Na instrução if .. else (se .... senão), se a condição for verdadeira, serão executadas as instruções que estiveremescritas dentro do bloco do if. Caso contrário, serão executadas as instruções que estiverem escritas dentro do bloco do comando else. if (<condição>) { <instrução(ões) executada(s) apenas se a condição for verdadeira> } else { <instrução(ões) executada(s) apenas se a condição for falsa> } Exemplo: Algoritmo que lê duas notas de um aluno, calcula e imprime a média desse aluno. Depois, informa se ele foi aprovado ou reprovado, sendo que para ser aprovado precisa atingir no mínimo média 6. double nota1, nota2, media; nota1 = leiaDouble("Entre com a nota 1"); nota2 = leiaDouble("Entre com a nota 2"); media = (nota1 + nota2)/2; imprima("Media = " + media); 10 if(media >= 6) { imprima("\nAprovado"); } else { imprima("\nReprovado"); } Exercícios de fixação 1. Escreva um algoritmo que leia um número e informe se ele é par ou ímpar. 2. Escreva um algoritmo para calcular e apresentar o maior de dois números inteiros. 3. Escreva um algoritmo que leia as duas notas bimestrais de um aluno e determine a média das notas semestral. A partir da média calculada o algoritmo deve imprimir uma das seguinte mensagem: “Aprovado”, “Reprovado” ou em “Exame” (a média é 6 para Aprovação, menor que 3 para Reprovação e as demais em Exame). 4. Faça um algoritmo que leia uma letra. Conforme a letra digitada escrever: “F – Feminino”, “M – Masculino” ou “Sexo Inválido”. 5. Faça um algoritmo que leia a idade de uma pessoa e informe se esta é maior ou menor de idade. Caso seja maior, informe há quantos anos ela completou 18 anos. 6. Escrever um algoritmo que lê um conjunto de três valores I, A e B, onde: I é um valor inteiro; A e B são quaisquer valores reais. Baseando-se nesses valores: a) Se I for igual a 0 (zero) apresentar a soma de A e B. b) Se I for diferente de 0 (zero) apresentar os valores de A e B em ordem crescente. 7. Escreva um algoritmo que leia a quantidade de mulheres e a quantidade de homens em uma turma e depois calcule e: a. Imprima a quantidade total de pessoas. b. Informe ao usuário se a turma possui mais homens, mais mulheres ou se tem a mesma quantidade de homens e mulheres. 8. Escreva um algoritmo que leia os valores de dois lados adjacentes de uma figura geométrica e informe se eles representam um quadrado perfeito ou um retângulo. *Quadrado perfeito é aquele que possui todos os lados iguais. 9. A prefeitura abriu uma linha de crédito para os funcionários estatutários. O valor máximo da prestação não poderá ultrapassar 30% do salário bruto. Fazer um algoritmo que leia o salário bruto e o valor previsto para prestação, e informe se o empréstimo pode ou não ser concedido. 10. Escreva um algoritmo que leia dois números e apresente os seguintes resultados: - A média dos números. - Caso os números sejam diferentes: O quadrado do menor. O dobro do maior. 11 11. Escreva um algoritmo que leia dois números e imprima a diferença do maior pelo menor, caso os números sejam diferentes. Caso os números sejam iguais, apresente a soma dos mesmos. 12. Escreva um algoritmo que leia velocidade máxima permitida em uma avenida e a velocidade de um carro que passou por ela e: a. Caso o motorista esteja dentro da velocidade permitida, apresente a mensagem “Motorista está dentro da velocidade permitida!”; b. Caso contrário, apresente a mensagem “Motorista ultrapassou a velocidade máxima”, calcule e imprima o valor da multa a ser paga por esse motorista. São pagos R$ 10,00 para cada quilômetro que ultrapasse a velocidade máxima. 13. O IMC (índice de massa corporal) é muito utilizado para analisar se uma pessoa está acima ou abaixo do peso, de forma que: - O IMC é calculado da seguinte forma: peso/altura2. - Considera-se que o IMC ideal para os homens é 22 e para as mulheres é 20.8. Escreva um algoritmo para ler os dados de uma pessoa, imprimir o IMC desta e indicar se ela está no peso ideal, acima do peso ideal, ou abaixo do peso ideal. 14. Uma companhia de saneamento calcula o valor da conta de água de acordo com o tipo de consumidor: - Residencial: R$ 5.00 de taxa mais R$ 0.05 por m3 gasto; - Comercial: R$ 500.00 para os primeiros 80 m3, acrescido de R$ 0.25 por m3 gastos acima dos 80 m3; - Industrial: R$ 800.00 para os primeiros 100 m3, acrescido de R$ 0.04 por m3 gastos acima dos 100 m3. Baseando-se nessas informações, escreva um algoritmo que leia o tipo do cliente e o seu consumo de água em metros cúbicos. Depois, calcule e apresente a conta de água a ser paga pelo cliente. 15. Escreva um algoritmo que receba a data de aniversário de duas pessoas (pessoa1 e pessoa2), sendo que a data consiste em dia, mês e ano. Baseando nestas datas, informe se as duas pessoas têm a mesma idade ou, em caso negativo, informe qual é a mais velha. Operadores Lógicos Uma condição, utilizada nas estruturas de decisão (e de repetição), é formada por uma expressão lógica, que compara valores e retorna verdadeiro ou falso. A condição pode ser formada por uma expressão simples, que compara apenas um valor (ou seja, testa apenas uma situação). Por exemplo, uma condição formada pela expressão lógica num > 10 consiste em uma única comparação, que retornará verdadeiro se o número for maior que 10 e falso se o número for menor ou igual a 10. Porém, uma expressão lógica pode ser formada pela comparação de dois ou mais valores, testando mais de uma situação. Por exemplo, para verificar se um aluno foi aprovado é necessário que dois valores sejam testados, a quantidade de presenças (consideremos o mínimo 51) e a média (consideremos o mínimo 6.0), logo, a expressão lógica que compõe a condição que verifica se o aluno foi aprovado ou não será formada por duas comparações: media >= 6 e frequência >= 51. 12 Nos casos em que as expressões lógicas são formadas por duas ou mais comparações, os operadores lógicos são utilizados para associar a relação de comparação. São vários operadores lógicos, mas nesta disciplina serão usados os seguintes: Operador Função && Conjunção (e) || Disjunção (ou) Conjunção (&&): dadas as condições C1 e C2, denomina-se a conjunção de C1 e C2 a proposição C1 && C2 (leia-se C1 e C2) cuja tabela-verdade é: C1 C2 C1 && C2 V V V V F F F V F F F F Disjunção ( || ): dadas as condições C1 e C2, denomina-se disjunção de C1 e C2 a proposição C1 || C2 (leia-se C1 ou C2) cuja tabela-verdade é: P Q P || Q V V V V F V F V V F F F Exemplo1 - Algoritmo que lê 3 números e informa na tela qual é o maior deles (considerando que o usuário não digitará números iguais). double n1, n2, n3; n1 = leiaDouble("Entre com o primeiro número:"); n2 = leiaDouble("Entre com o segundo número:"); n3 = leiaDouble("Entre com o terceiro número:"); if (n1 > n2 && n1 > n3) { imprima("\n Maior número é: " + n1); } else { if (n2 > n3) { imprima("\n Maior número é: " + n2); } else { imprima("\n Maior número é: " + n3); } } A proposição C1 && C2 é verdadeira se e somente se as duas condições forem verdadeiras. A proposição C1 || C2 é verdadeira se pelo menos uma das condições for verdadeira. 13 Exemplo2 - Algoritmo que lê o sexo e a idade de uma pessoa e informa se esta deve se alistar no serviço militar ou não, sendo que devem se alistar os homens maiores de idade. int idade; char sexo; sexo = leiaChar("Digite o sexo da pessoa:"); idade = leiaInt("Digite a idade da pessoa:"); if (idade >= 18&& sexo == 'm') { imprima("\n Deve se alistar no serviço militar!"); } else { imprima("\n Não precisa se alistar no serviço militar!"); } Exercícios de fixação 1. Escreva um algoritmo que leia três números e informe se eles são todos iguais ou se não são todos iguais. 2. Escreva um algoritmo que leia um número inteiro. Caso o número digitado seja par e positivo calcule e apresente como resultado a metade deste número. Caso contrário, apresente como resultado o dobro do número. 3. Dados três valores A, B e C, verificar e informar se eles podem ser os comprimentos dos lados de um triângulo e, se forem, verificar se compõem um triângulo equilátero, isósceles ou escaleno, sendo que: - Triângulo é uma figura geométrica de três lados, onde cada lado é menor do que a soma dos outros dois. - Triângulo equilátero: três lados iguais. - Triângulo isósceles: dois lados iguais. - Triângulo escaleno: todos os lados diferentes. 4. Escreva um algoritmo que informe se um número digitado está compreendido entre 10 e 50, inclusive os dois. Caso não esteja no intervalo indicado, informe se o número vem antes ou depois deste. 5. Faça um algoritmo que leia o sexo (‘F’ – Feminino ou ‘M’ – Masculino) e o turno de um aluno (‘M’ – Matutino ou ‘V’ – Vespertino) e apresente uma das mensagens a seguir: “Bom dia, querida!” “Bom dia, querido!” “Boa tarde, querida!” “Boa tarde, querido!” 6. Uma barraca que vende uvas e morangos está fazendo uma promoção de forma que, se o cliente comprar mais de 1 Kg de frutas ou o valor total da compra ultrapassar R$ 30.00, receberá um desconto de 10% sobre este total. Escreva um algoritmo que leia quantidade (em Kg) de uvas e a quantidade (em Kg) de morangos compradas por um cliente e informe o valor a ser pago. Considere que o valor do Kg do morango é de R$ 6.00 e o valor do Kg da uva é R$ 7.50. 14 7. Faça um programa que receba o valor de uma mensalidade escolar, a data de vencimento (dia e mês) e a data do pagamento (dia e mês), depois informe o valor a ser pago, sendo que: valor se pagar adiantado - 5% de desconto no valor original da mensalidade; valor com atraso - 5% de acréscimo no valor original da mensalidade. 8. Crie um algoritmo que leia a idade de uma pessoa e informe a sua classe eleitoral: - não eleitor (abaixo de 16 anos); - eleitor obrigatório (entre a faixa de 18 até menor de 65 anos); - eleitor facultativo (de 16 até 17 anos e de 65 anos ou mais). 9. Uma livraria está fazendo uma promoção para pagamento à vista em que o comprador pode escolher entre dois critérios de desconto: Critério A: desconto de - R$ 0.25 por livro + R$ 7.50 fixo Critério B: desconto de - R$ 0.50 por livro + R$ 2.50 fixo Escreva um algoritmo em que o usuário entre com a quantidade de livros que deseja comprar e o programa imprime uma das seguintes mensagens: As duas opções oferecem o mesmo desconto; A melhor opção de desconto é o critério A; A melhor opção de desconto é o critério B. 10. Escreva um algoritmo que leia três números e apresente uma das suas mensagens a seguir: “Todos os números são diferentes a zero” ou “Nem todos os números são diferentes de zero”. Caso todos os números sejam diferentes de zero, calcular o resultado a ser apresentado para o usuário da seguinte forma: - Se todos os números forem positivos: o resultado é o produto dos números; - Se pelo menos um número for positivo: o resultado é a soma dos números; - Se todos os números forem negativos: o resultado é a média dos números. 11. Uma loja está fazendo uma liquidação, sendo que o desconto é baseado nos seguintes dados dos produtos: preço e cor da etiqueta ('A' - Azul ou 'V' - Verde). Escreva um algoritmo que leia os dados do produto e calcule o valor a ser pago pelo produto, da seguinte forma: - Nos produtos com preço de R$ 200.00 ou mais e que possuem a etiqueta azul o cliente pagará a metade do preço; - Nos produtos com preço de R$ 100.00 ou mais e que possuem a etiqueta verde o cliente terá um desconto de 25%; - Nos demais produtos o cliente receberá um desconto de 10%. 12. Faça um algoritmo para um caixa eletrônico, considerando que deve-se solicitar ao usuário a valor do saque e depois informar quantas notas de cada valor serão fornecidas. Considere que: as notas disponíveis serão as de 1, 5, 10, 50 e 100 reais; 15 o valor mínimo é de 10 reais e o máximo é de 500 reais, sendo que deve ser apresentada uma mensagem de erro caso esse critério não seja respeitado; não precisa se preocupar com a quantidade de notas existentes no caixa. Exemplo: para sacar a quantia de 328 reais, o programa deve fornecer 3 notas de 100, 2 notas de 10, 1 nota de 5 e 3 notas de 1. 13. Construa um algoritmo que leia o código de um determinado produto e mostre a sua classificação, utilizando a seguinte tabela: Código do Produto (CP) Classificação 1 Alimento não perecível 2, 3 ou 4 Alimento perecível 5 ou 6 Material de Limpeza Qualquer outro código Inválido 14. Construa um algoritmo para calcular o valor a ser pago pelo período de estacionamento de um automóvel. O usuário deverá digitar a hora de entrada e a hora de saída. O valor cobrado pelo estacionamento é: - R$ 4,00 para 1 hora de estacionamento - R$ 6,00 para 2 horas de estacionamento - R$ 1,00 por hora adicional (acima de 2 horas) Considere que o veículo ficou estacionado por hora cheia (desconsidere os minutos). 15. Uma escola utiliza os seguintes critérios para a obtenção da nota do aluno: - O aluno faz duas provas, sendo que o cálculo da média é (Prova1 + Prova2)/2; - O aluno deve assistir, no mínimo, 15 aulas para não ser reprovado por falta; - O aluno deve atingir, no mínimo, a média 6.0 para ser aprovado. Escreva um algoritmo que leia duas notas e quantidade de aulas frequentadas e apresente a situação do aluno, de acordo com as instruções abaixo: - APROVADO ' atingiu média 6.0 e assistiu pelo menos 15 aulas; - REPROVADO POR FALTA ' atingiu ou não a média 6.0, mas não assistiu o mínimo de 15 aulas; - VAI PARA EXAME ' assistiu pelo menos 15 aulas, mas não atingiu a média 6.0. - Caso o aluno tenha ido para exame, deve ser solicitada a nota do exame e informado se o aluno foi APROVADO ou REPROVADO, sendo que o cálculo da nota final é (média+exame)/2 e que o aluno deve atingir média 6.0. 5 Estrutura de Repetição (laço) - while O laço é a estrutura utilizada para repetir um comando (ou conjunto de comandos) por um determinado número de vezes, de acordo com uma condição pré-estabelecida. No comando de repetição while, enquanto a condição for verdadeira os comandos serão executados, quando for falsa, o laço é finalizado. Obs: O teste da condição é realizado no início da repetição, assim, se na primeira vez a condição for falsa, os comandos nunca serão executados. 16 while (<condição>) { ... <instrução(ões) realizada(s) enquanto a condição for verdadeira> ... } Exemplo1: algoritmo que lê 2 notas de 10 alunos e imprime a média de cada um deles. int cont = 0; double nota1, nota2, media; while (cont < 10) { nota1 = leiaDouble("Entre com a nota 1"); nota2 = leiaDouble("Entre com a nota 2:"); media = (nota1+nota2)/2; imprima("\nMédia: " + media); cont=cont+1; } Exemplo2: algoritmo que lê a quantidade e o preço unitário de 5 produtos comprados por um cliente, calcula e imprima: O valor gasto com cada produto. A quantidade de produtos que custam mais que R$ 100.00. int cont = 0, quant, qtMais100=0; double precoUni, valorGasto; while (cont < 5){ quant = leiaInt("Digite a quantidade comprada:"); precoUni = leiaDouble("Digite o valor unitário:"); valorGasto = quant*precoUni; imprima("\n Valor gasto: " + valorGasto); if (precoUni > 100) { qtMais100 = qtMais100+1; } cont=cont+1; } imprima("\n Qt produtos mais caros que R$ 100.00: " + qtMais100); Teste de Mesa do Exemplo 2 cont quant precoUni valorGasto qtMais100 Valores iniciais 0 - - - 0 1 1 2 150.00 300.00 1 2 2 10 50.00 500.00 1 3 3 3 35.00 105.00 1 4 4 5 200.00 1000.00 2 5 5 1 10.00 10.00 2 Valores Finais 5 1 10.00 10.00 2 17 * O Java e, consequentemente, o JLive, inicializam as variáveis numéricas com zero (0), mas algumas linguagens não fazem isso. Assim, na disciplina, consideraremos que a inicialização deverá ser feita explicitamente quando for necessário a utilização de um valor inicial (caso de contadores e acumuladores, por exemplo). Saída do exemplo 2: Valor gasto com o produto: 300.00 Valor gasto com o produto: 500.00 Valor gasto com o produto: 105.00 Valor gasto com o produto: 1000.00 Valor gasto com o produto: 10.00 Quant. de produtos mais caros que R$ 100.00: 2 Exemplo3: Um comerciante deseja fazer o levantamento do lucro das mercadorias que ele comercializa. Para isto, mandou digitar uma linha para cada mercadoria com quantidade em estoque, preço de compra e preço de venda. Fazer um algoritmo que leia um número indeterminado de mercadorias até que o usuário digite zero na quantidade, determine e escreva o valor total de compra e de venda de todas as mercadorias, assim como o lucro total. int quant; double preco_compra, preco_venda, total_compra=0, total_venda=0, lucro_total=0; quant=leiaInt(“Quantidade em estoque da mercadoria:”); while(quant!=0) { preco_compra=leiaDouble(“Preço de compra:”); preco_venda=leiaDouble(“Preço de venda:”); total_compra=total_compra+preco_compra; total_venda=total_venda+preco_venda; quant=leiaInt(“Quantidade em estoque da mercadoria:”); } lucro_total=total_venda-total_compra; imprima(“Valor total de compra=”+total_compra); imprima(“Valor total de venda=”+total_venda); imprima(“Lucro total=”+lucro_total); 18 Exercícios de fixação 1. Escreva um algoritmo que leia a idade e o sexo (‘f’ – feminino ou ‘m’ – masculino) de 5 pessoas, calcule e imprima. a. A quantidade de homens idosos (65 anos ou mais). b. A quantidade de mulheres com idade entre 10 e 15 anos. 2. Faça um programa que leia 5 pares de números e, para cada par, imprima o quadrado do menor número. 3. Escreva um algoritmo que imprima todos os números existentes entre 100 e 200 (inclusive os dois). 4. Escreva um algoritmo que solicite 5 números inteiros ao usuário, calcule e imprima: a. para cada número, informe se ele é negativo, positivo ou igual a 0 (zero); b. a quantidade de números positivos maiores que 15; c. a quantidade de números negativos pares. 5. Escreva um algoritmo que solicite 10 números inteiros ao usuário, calcule e imprima: a. A quantidade de zeros; b. A metade de cada número par diferente de zero; c. O percentual de números ímpares. 6. Escreva um algoritmo que imprima os números existentes entre 30 e 60 (inclusive os dois), em ordem decrescente. 7. Uma artesã armazena os seguintes dados sobre os produtos que revende: preço de custo com a fabricação e preço de venda.. Escreva um algoritmo que leia os dados de 50 produtos que ela tem para vender, calcule e imprima: a. Para cada produto, o lucro que proporcionará; b. A quantidade de produtos com os quais terá mais que R$ 10.00 de lucro; c. O percentual de produtos que oferecerão R$ 10.00 de lucro ou menos. 8. Faça um algoritmo que leia os seguintes dados sobre 80 vendas de uma loja: o valor da compra e o valor em dinheiro que o cliente entregou ao caixa da loja para realizar o pagamento. Depois: a) Para cada venda apresente: Mensagem VALOR INSUFICIENTE e o valor que falta para completar o pagamento, caso o cliente entregue um valor menor que o preço do produto; Mensagem VALOR EXATO, NÃO TEM TROCO, caso o cliente entregue o valor do produto ao caixa; Mensagem VALOR SUPERIOR, TEM TROCO e o valor do troco a ser entregue ao cliente, caso o cliente entregue um valor maior que o preço do produto. b) A quantidade de clientes que entregou o valor exato da compra. 9. Faça um algoritmo que leia o valor de 5 produtos, calcule e imprima a soma desses valores. 10. Faça um algoritmo que leia 10 números, calcule e imprima: A soma dos números ímpares; A média dos números pares. 19 11. No final de 2014, foi feito um levantamento de informações dos 500 alunos de uma escola, dos quais foram coletados os seguintes dados: idade, sexo e turno (‘d’ – diurno, ‘n’ – noturno). Faça um algoritmo que leia os dados dos 500 alunos, calcule e apresente: a média de idade dos alunos; a quantidade de alunos do sexo masculino que estudam no período diurno; a quantidade de alunos com idade entre 15 e 18 anos (inclusive as duas idades) que estudam no período noturno. 12. Um grupo de investidores fez levantamento sobre os hábitos das mulheres que moram em uma pequena cidade do interior, para saber se valia a pena abrir um novo salão de beleza na cidade. Para isso, para cada entrevistada solicitou os seguintes dados: idade, renda mensal, valor gasto mensalmente com salão de beleza e se acha que há necessidade de um novo salão na cidade ('s' - sim ou 'n' - não). Sabendo-se que foram entrevistadas 1500 mulheres, fazer um algoritmo que calcule e escreva: a) a média dos valores gastos com salão por mulheres com idade entre 25 e 45 anos (inclusive as duas); b) o número de mulheres que respondeu não; c) a quantidade de mulheres que respondeu sim e que tem uma renda mensal menor que um salário mínimo. O valor do salário mínimo deve ser lido antes da leitura dos dados da pesquisa 13. Escreva um algoritmo que leia um número e imprima uma mensagem indicando se ele é par ou não. Porém, este algoritmo deve se repetir até que o usuário digite zero. 14. Construa um algoritmo que permita fazer um levantamento do estoque de vinhos de uma adega, tendo como dados de entrada: tipo de vinho (B - Branco, T - Tinto e R - Rosê). Especifique a porcentagem de cada tipo, considerando que a quantidade de vinhos é desconhecida (usar como finalizador um tipo de vinho inválido). 15. Escreva um algoritmo que leia uma quantidade indeterminada de duplas de valores (2 valores de cada vez). Para cada dupla, apresentar uma mensagem que indique se ela foi informada em ordem crescente ou decrescente. A repetição será encerrada ao serem fornecidos valores iguais para os elementos da dupla. Por exemplo, se para uma dupla o usuário digitar o primeiro valor igual a 7 e o segundo valor igual a 4, deverá ser apresentada a mensagem decrescente. 16. Em uma eleição presidencial, existem 3 candidatos. Os votos foram registrados em fichas, sendo que cada ficha contém um dos códigos a seguir: 1, 2, 3 - Voto para os respectivos candidatos 4 - Voto nulo 5 - Voto em branco Construa um algoritmo que leia as fichas, de forma que a última ficha (que não entre nos cálculos) contém valor 0 (zero), calcule e apresente: a) a quantidade de eleitores que votaram; b) o total de eleitores que não escolheram um candidato (nulos ou brancos); c) o número candidato vencedor. 20 17. Foi feita uma pesquisa de audiência de canal de TV em várias casas de uma certa cidade, num determinado dia. Para cada casa visitada, foi fornecido o número do canal (4 ou 5) e a quantidade depessoas que o estavam assistindo naquela casa. Se a televisão estivesse desligada, nada era anotado, ou seja, esta casa não entrava na pesquisa. Fazer um algoritmo que: - leia um número indeterminado de dados, sendo que o "FLAG" (condição de parada) corresponde ao número do canal igual a zero; - calcule e apresente: a) a quantidade de casas em que se assistia o canal 4; b) a quantidade de pessoas que assistiam o canal 5. 18. Foi feita uma pesquisa para determinar o índice de mortalidade infantil em um certo período. Fazer um algoritmo que: - Leia inicialmente o número de crianças nascidas no período; - Leia, em seguida, um número indeterminado de linhas, contendo, cada uma, o sexo de uma criança morta (‘m’ - masculino, ‘f’ - feminino) e o número de meses de vida da criança. A última linha, que não entrará nos cálculos, contém no lugar do sexo a letra ‘v’; Determine e imprima: a) A porcentagem de crianças mortas no período; b) A quantidade de crianças do sexo masculino mortas no período; c) A quantidade de crianças que viveram 24 meses ou menos no período 19. Deseja-se fazer um levantamento a respeito da ausência de alunos a primeira prova de Algoritmos e Programação. Para cada um dos alunos é informado o número de matricula e a letra ‘A’ ou ‘P’ para o caso de o aluno estar ausente ou presente, respectivamente. Fazer um algoritmo que: a) leia, inicialmente, a quantidade de alunos da turma; b) leia as informações dos alunos da turma; c) calcule e apresente a porcentagem de ausência. 20. Faça um algoritmo que leia o saldo inicial da conta de uma pessoa. Depois, leia um número indeterminado de movimentações realizadas por essa pessoa e apresente o saldo final. Os dados das movimentações são tipo (S - saque, D - depósito) e valor. Considere que: um valor negativo indica que não existem mais movimentações a serem digitadas; para cada movimentação realizada imprima a mensagem correspondente: "SAQUE REALIZADO" ou "DEPÓSITO REALIZADO"; se a pessoa tentar sacar e não houver saldo suficiente na conta, o saque não será efetivado e deverá ser apresentada uma mensagem "SALDO INSUFICIENTE". 21. Escreva um algoritmo que solicite ao usuário o valor de 10 produtos e, depois da leitura, informe qual foi o menor valor informado. 21 22. Antes do racionamento de energia ser decretado quase ninguém falava em quilowatts, mas agora, todos a incorporaram a seu vocabulário. Sabendo que cada quilowatt de energia custa um centésimo do salário mínimo, escreva um algoritmo que: Receba inicialmente o valor do salário mínimo; Leia um número indeterminado de linhas contendo cada uma a quantidade de quilowatts gasta em uma residência, sendo que o FLAG é a quantidade de quilowatts negativa; Calcule e imprima: a) o valor a ser pago em cada residência; b) o valor total pago pelas residências; c) o maior valor pago por uma residência. 23. Uma contadora foi contratada por uma empresa para avaliar o valor a pagar pelos produtos que estão sendo expostos em uma feira. Sabendo que o valor de cada produto é calculado a partir de um valor mínimo, faça um algoritmo que: Receba, inicialmente, o valor mínimo para o produto; Leia um número indeterminado de linhas contendo cada uma os dados de um produto: peso (em gramas) e material (‘M’ - Madeira ou ‘A’ - Alumínio), sendo que a leitura deverá ser encerrada quando o usuário digitar o peso igual a zero. Calcule e imprima: a) para cada produto, informe o valor a ser pago, considerando que: nos produtos de madeira, acrescenta-se ao valor inicial R$ 10,00 por grama; e nos produtos de alumínio, acrescenta-se ao valor inicial R$ 20,00 por grama; b) a média dos preços dos produtos de madeira; 24. Faça um algoritmo que leia o sexo e a idade de um número indeterminado de pessoas, sendo que o FLAG é a idade igual a zero, calcule e imprima o sexo da pessoa mais velha. 25. Uma universidade deseja fazer um levantamento a respeito de seu concurso vestibular, de forma que para cada curso é fornecido o seguinte conjunto de valores. código do curso número de vagas número de candidatos do sexo masculino número de candidatos do sexo feminino Fazer um algoritmo que: a) realize a leitura das informações dos cursos, sendo que o código de curso igual a zero encerra a leitura; b) calcule e escreva, para cada curso: o número de candidatos por vaga; c) calcule e escreva a quantidade de cursos que oferecem menos de 50 vagas; d) calcule e escreva o total de candidatos do sexo feminino; e) determine o maior número de candidatos do sexo masculino e escreva esse número juntamente com o código do curso correspondente (supor que não haja empate). 22 26. Fazer um algoritmo que: leia e apresente o código e a altura das moças inscritas em um concurso de beleza. Para cada moça, existe uma linha contendo seu código e sua altura. A última linha que não corresponde a nenhuma moça, conterá 0 (zero) no lugar do código. calcule e escreva a maior altura e quantas moças a possuem. Não utilize vetor ou matriz para resolver o problema. 27. Uma companhia de teatro planeja dar uma série de espetáculos. A direção calcula que a R$ 5.00 o ingresso, serão vendidos 120 ingressos, e as despesas montarão em R$ 200.00. A uma diminuição de R$ 0.50 no preço dos ingressos espera-se que haja um aumento de 26 ingressos vendidos. Fazer um algoritmo que escreva uma tabela de valores do lucro esperado em função do preço do ingresso, fazendo-se variar este preço de R$ 5.00 a R$ 1.00 de R$ 0.50 em R$ 0.50. 28. Ana tem 5 anos e mende 1.15 metros. João tem 10 anos e mede 1.40 metros. Considerando que Ana cresce 5 cm ao ano e que João cresce 3 cm ao ano, calcule e informe em quantos anos Ana estará ficar mais alta que João.7 29. Uma empresa foi contratada pela prefeitura de uma cidade para avaliar a indenização que será dada aos proprietários de casas que serão derrubadas para a construção de um hospital. Sabendo que o valor da indenização de cada casa é calculado a partir de um valor mínimo inicial, faça um algoritmo que: a) Receba, inicialmente, o valor mínimo para a indenização; b) Leia um número indeterminado de linhas contendo cada uma os dados de uma casa: metragem (m2) e classe (‘A’ ou ‘B’), sendo que a leitura deverá ser encerrada quando o usuário digitar a metragem igual a zero. c) Calcule e imprima: para cada casa, informe o valor a ser pago de indenização ao proprietário, considerando que: nas casas de classe ‘A’, acrescenta-se ao valor mínimo inicial R$ 500,00 por metro quadrado; nas casas de classe ‘B’, acrescenta-se ao valor mínimo inicial R$ 300,00 por metro quadrado. o valor total gasto pela prefeitura com indenização; o maior valor pago para indenizar uma casa de classe ‘B’. 30. Numa fábrica trabalham homens e mulheres divididos em duas classes: A – os que fazem até 100 peças por mês; e B – os que fazem mais de 100 peças por mês. Os operários da classe ‘A’ recebe m apenas o salário-mínimo e os operários da classe ‘B’ recebem salário- mínimo e mais R$ 1.00 por peça. Fazer um algoritmo que: - Leia inicialmente o valor do salário-mínimo; - Leia várias linhas contendo o número do operário e quantas peças ele fabricou no mês. A última linha, que servirá de flag (condição de parada), terá o número do operário igual a zero. - Calcule e escreva a) A classe e o salário de cada operário. 23 b) O número do operário que recebeu o maior salário. Considere que não houve empate. c) O valor total da folha de pagamento dos operários da fábrica nesse mês. 6 Estrutura de Repetição (laço) - for No for, as instruçõessão executadas até que a condição se torne falsa, ou seja, enquanto a condição for verdadeira. Sintaxe: for(exp1;exp2;exp3) { instrução 1; instrução 2; } for versus while Exemplo1: Algoritmo que imprime todos os números de 1 a 5: while for int cont=1; while(cont <=5){ imprima("\nCont: " + cont); cont++; } for (int cont=1; cont<=5; cont++) { imprima("\nCont: " + cont); } Exemplo2: Algoritmo que lê 20 números e imprime a soma desses números: while for int cont=0, num, soma=0; while(cont <20){ num=leiaInt("Numero:"); soma = soma + num; cont++; } imprima("Soma: " + soma); int num, soma=0; for (int cont=0; cont<20; cont++) { num=leiaInt("Numero:"); soma = soma + num; } imprima("Soma: " + soma); Exemplo3: Algoritmo que calcula o valor de S, sendo que: S = 3+6+9+12+15+18+...+300 while for int S=0, num=3; while (num<=300) { S = S + num; num+=3; } imprima("\nS: " + S); int S=0; for (int num=3; num<=300; num+=3) { S = S + num; } imprima("\nS: " + S); exp1 expressão executada antes de entrar no laço exp2 é a condição do for, ou seja, o laço é executado enquanto a exp2 for verdadeira, sendo que a condição é analisada em toda virada do laço. exp3 ao final de cada passagem pelo for a exp3 é executada. 24 Exercícios de fixação 1. Escreva um algoritmo que imprima todos os números de 10 a 50, em ordem crescente. 2. Escreva um algoritmo que imprima os números de 20 a 200, em ordem decrescente, de dois em dois. 3. Faça um algoritmo que imprima os 10 primeiros termos da série: 50 100 150 200 ... 4. Escreva um algoritmo que calcule a soma dos termos da seguinte série: 20 30 40 50 60 ... 500 5. Escreva um algoritmo que calcule a média dos termos da seguinte série: 10 15 20 25 30 ... 1000 6. Escreva um algoritmo que calcule o produto dos 10 primeiros termos da seguinte série: 10 15 20 25 30 ... 7. Faça um programa que calcule o valor de S, sendo que: S = (10X – 20X + 30X – 40X + ... 5000X)/100 8. Faça um programa que calcule o valor de S, sendo que S é a soma dos 15 primeiros termos da série: ... 8 20 6 20 4 20 2 20 S 9. Fazer um algoritmo que calcule escreva o valor de S, que é a soma dos 15 primeiros termos da série: .... 23 25 18 20 13 15 8 10 3 5 S 10. Escreva um algoritmo que calcule a soma dos 20 primeiros números da série: 5 -10 15 -20 25 -30 ... 11. Escreva um algoritmo que calcule e apresente a soma dos 30 primeiro termos da série: 12. Fazer um algoritmo que calcule o fatorial de 5. Exemplo: 5! = 5*4*3*2*1 13. Fala um programa que leia um número e apresente o fatorial do mesmo. 14. Faça um programa que leia 10 números, calcule e apresente o fatorial do maior deles. 15. Escreva um algoritmo que calcule e apresente o valor de S, sendo que: 16. Fazer um algoritmo que solicite ao usuário um número e calcule o fatorial do mesmo. Exemplo: 6! = 6*5*4*3*2*1 17. Escreva um algoritmo que solicite ao usuário dois números e imprima todos os números existentes entre o menor e o maior número digitado. 480 - 475 + 470 - 465 ... 10 11 12 13 S = 2 - 4 + 6 - 8 + ... 20 1 2 3 4 10 25 18. Escreva um algoritmo para calcular a série Fibonacci até o N-ésimo termo. A série tem a seguinte forma: 1,1,2,3,5,8,13,21,34,… 19. Escreva um algoritmo para gerar até o n-ésimo termo de uma progressão aritmética de termo inicial Ti e razão r. Todos estes valores deverão ser lidos do teclado. Exemplo: Ti = 10 r = 2 n = 5 Resultado PA 10 12 14 16 18 20. Escreva um algoritmo para gerar até o n-ésimo termo de uma progressão geométrica de termo inicial Ti e razão r. Todos estes valores deverão ser lidos do teclado. Exemplo: Ti = 10 r = 2 n = 5 Resultado PG 10 20 40 80 160 21. Escreva um algoritmo que leia dois valores inteiros, X e Y, calcule e imprima XY(elevar X à potência de Y). Exemplo: 34 = 3*3*3*3 22. Escreva um algoritmo que calcule o valor de S, sendo que: S = 10! + 8! + 6! + ...+ 2! 23. Faça um algoritmo que calcule e imprima cada elemento da série a seguir: 220 218 216 ... 22 7 Vetor – Matriz Unidimensional Tipo de dado utilizado para representar certa quantidade de variáveis de valores homogêneos, sendo que pode ser definido como uma coleção de variáveis de um mesmo tipo e com o mesmo nome, ocupando posições consecutivas na memória. Assim, como em outras variáveis os vetores devem ser explicitamente declarados para que seja alocado espaço para elas na memória. Declaração tipo[] nome = new tipo[tam]; - tipo tipo de cada elemento da vetor. Ex. int, char, double, double; - nome nome do vetor. - tam quantidade de elementos que o vetor poderá armazenar(nome[0] até nome[tam-1]). Exemplo1: Declaração de um vetor num de 5 elementos do tipo double. double[] num = new double[5]; 26 Exemplo2: Declaração de um vetor letras de 6 elementos do tipo char. char[] letras = new char[6]; Exemplo3: Declaração e inicialização de um vetor vet de 4 elementos do tipo int. int[] vet = {3, 5, 4, 8}; Nesse caso, o tamanho do vetor é determinado pelo número de elementos na lista de inicializadores. Manipulação: corresponde a forma como os dados (elementos) do vetor devem ser acessados, para leitura ou alteração. - Os elementos são identificados a partir de índices (posição do elemento no vetor), a partir do índice 0 (zero). - Um vetor pode ser representado como um repositório de valores identificados por um índice: Índice (posição) 0 1 2 3 4 Conteúdo (valor) 5 6 8 5 10 - Para manipular um determinado elemento é necessário colocar o nome do vetor e o índice do elemento. Considerando que o vetor acima se chame NUM; - O vetor NUM tem 5 posições. - O valor contido em NUM[4] é 10. Nesse caso, 4 é o índice e 10 é o conteúdo (valor). - NUM[1] = 15 ao executar essa instrução, o valor de NUM[1], que era 6 passa a ser 15. - NUM[0] == 6 essa instrução verifica se o valor armazenado na primeira posição é igual a 6 e retorna V (true) ou F (false). Nesse caso, retorna falso. - A atribuição, consulta e alteração dos valores dos elementos devem ser realizadas de elemento em elemento. Por exemplo, o trecho apresentado a seguir, mostra como declarar e preencher um vetor de inteiros de 5 posições: int[] num = new int[5]; for (int i = 0; i < 5; i = i + 1) { num[i] = leiaInt("Entre com o número " +i); } Exemplo1: Algoritmo que solicita ao usuário as médias de 5 alunos e calcula e imprime a média geral da turma. Depois, calcula e imprime a quantidade de medias maiores da média geral da turma. double[] media = new double[5]; double somaMedia=0, mediaGeral; int qtMaiores = 0; for (int i=0; i<5; i=i+1) { media[i] = leiaInt("Entre com a media do aluno " +i); somaMedia = somaMedia + media[i]; } mediaGeral = somaMedia/5; 27 imprima("Media Geral = " + mediaGeral); for (int i=0; i<5; i=i+1) { if (media[i]>mediaGeral) { qtMaiores = qtMaiores+1; } } imprima("Qt. de medias maiores que a média geral:" + qtMaiores); Exemplo2: Algoritmo que solicita ao usuário 5 números inteiros e guarda em um vetor, depois, imprime o vetor de trás para frente. int[] num = new int[5]; for (int i=0; i<5; i++) num[i] = leiaInt("Entrecom o número " + i); } for (int i=4; i>=0; i--){ imprima(“ “ + num[i]); } Exercícios de fixação 1. Escreva um algoritmo que leia a idade de 10 pessoas e guarde em um vetor, calcule e imprima: a) A maior idade. b) A quantidade de pessoas que possuem idade igual a maior idade. 2. Escreva um algoritmo que leia dados de um vetor A, com 5 elementos inteiros. Depois, solicite um número ao usuário e informe quantas vezes esse número aparece no vetor. 3. Escreva um algoritmo que leia as 10 respostas do gabarito de uma prova e guarde em um vetor de caracteres G, sendo que a posição do vetor representa o número da questão. A seguir, leia as 10 respostas de um aluno e guarde em um vetor R. Depois, realize as seguintes ações: a. Imprima os números das questões que o aluno errou. b. Informe se o aluno foi aprovado, sendo que é aprovado o aluno que teve 6 ou mais acertos. 4. Escreva um algoritmo que leia 5 números inteiros diferentes (não repetidos) e guarde em um vetor, calcule e imprima: a) A posição de cada número par. b) A posição do maior elemento do vetor, considerando que não existem valores repetidos. 5. Escreva um algoritmo que leia dados de um vetor A, com 10 elementos inteiros. Depois, calcule e imprima quantas vezes o primeiro elemento aparece no vetor. 6. Escreva um algoritmo que leia dados de um vetor A, com 10 elementos inteiros. Depois, calcule e imprima quantas vezes o último elemento aparece no vetor. 28 7. Faça um algoritmo que leia e imprima um vetor A de 10 posições e a soma de todos os elementos que são diferentes do elemento armazenado na primeira posição. 8. Faça um algoritmo que preencha e imprima um vetor com 100 elementos inteiros de acordo com as seguintes instruções: As posições pares devem ser preenchidas com o valor 5; As posições ímpares devem ser preenchidas com os valores da seguinte sequência: 3 6 9 12 15 . . . 9. Escreva um algoritmo que leia um vetor A de 10 posições e crie dois vetores B e C, de 5 elementos cada, preenchidos da seguintes forma: a) vetor B: conterá os valores que estão nas posições pares de A. b) vetor C: conterá a soma dos valores correspondentes de A e B. EXEMPLO: Índice (posição) 0 1 2 3 4 5 6 7 8 9 Vetor A 45 8 20 13 15 9 10 8 51 14 Vetor B 45 20 15 10 51 Vetor C 90 28 35 23 66 10. Escreva um algoritmo que leia dados de dois vetores A e B, de 5 elementos inteiros cada. Depois: a) construa um vetor C, no qual cada elemento é a diferença dos elementos correspondentes de A e B. EXEMPLO: Índice (posição) 0 1 2 3 4 Vetor A 10 8 20 13 15 Vetor B 5 5 10 8 20 Vetor C 5 3 10 5 -5 b) Informe quantos elementos negativos aparecem em C. 11. Escreva um algoritmo que leia os dados de dois vetores, NOTA1 e NOTA2, preenchidos com as notas de 10 alunos, sendo que o índice (posição no vetor) é o código do aluno. Depois, preencha um vetor MEDIAS com as médias dos alunos e informe o código de todos os alunos aprovados, considerando que a média mínima para aprovação é 6.0. 12. Escreva um algoritmo que leia dados de dois vetores A e B, com 10 elementos cada. Crie um vetor C, com 20 elementos, que é a junção de A e B. 13. Escreva um algoritmo que leia os dados de dois vetores A e B, com 5 caracteres cada, e depois crie e imprima um vetor C preenchido com os valores intercalados de A e B. 29 14. Faça um algoritmo que leia os dados e preencha 2 vetores para guardar a idade e o sexo de 10 pessoas, sendo que o índice do vetor corresponde ao código da pessoa. Então, após a leitura, imprima: a. o código de cada uma das mulheres; b. a quantidade de homens menores de 21 anos. 15. Faça um programa para ler um valor N qualquer (que será o tamanho dos vetores). Posteriormente, leia dois vetores (A e B de tamanho N cada um) e depois armazene em um terceiro vetor (C) a soma de cada elemento do vetor A com o elemento em posição inversa do vetor B. Ao final, imprima o vetor C. Por exemplo, se N = 3: C[0] = A[0] + B[2]; C[1] = A[1] + B[1]; C[2] = A[2] + B[0]). 16. Escreva um algoritmo que leia, preencha e imprima um vetor A de 10 elementos inteiros. Depois, troque o conteúdo das posições pares com o conteúdo das posições ímpares. Por exemplo: - O conteúdo da posição 0 do vetor deve ser inserido na posição 1 e o conteúdo da posição 1 deve ser inserido na posição 0; - O conteúdo da posição 2 do vetor deve ser inserido na posição 3 e o conteúdo da posição 3 deve ser inserido na posição 2; - E assim por diante. 17. Escreva um algoritmo que leia, preencha e imprima um vetor A de 10 elementos inteiros. Depois, preencha e imprima um vetor B de 10 elementos inteiros, que deverá conter os valores das posições pares de A em suas posições ímpares e os valores das posições ímpares de A em suas posições pares. 8 Matrizes Bidimensionais ou variáveis indexadas bidimensionais Assim como um vetor, matriz é um tipo de dado utilizado para representar uma determinada quantidade de variáveis de valores homogêneos, ou seja, do mesmo tipo. Como o próprio nome sugere, possui duas dimensões (linha e coluna). Forma geral de declaração: tipo[][] nome = new tipo[qtLinhas] [qtColunas]; tipo tipo de cada elemento da matriz. Ex. int, char, float, double; nome nome da matriz. qtLinhas quantidade de linhas da matriz. qtColunas quantidade de colunas da matriz. Exemplo: Declaração de uma matriz de inteiros, chamada mat, com 2 linhas e 5 colunas: int[ ][ ] mat = new int [2] [5]; 30 Declaração e inicialização da matriz int[][] mat = { {1, 2, 3, 4, 5}, {2,5,6,4,3} }; - Nesse caso, o tamanho da matriz é determinado pelo número de elementos na lista de inicializadores, no caso acima a matriz recebe 2 linhas e 5 colunas. Manipulação do elemento da matriz A manipulação dos elementos da matriz bidimensional é feita com a utilização de dois índices, que indicam a linha e a coluna, respectivamente, em que elemento está posicionado. Exemplo: Matriz A com 3 linhas e 2 colunas: Coluna 0 Coluna 1 Linha 0 20 15 Linha 1 10 8 Linha 2 30 50 Exemplo 1: Lê duas matrizes A e B, de ordem 3x3, e gera uma matriz C, que é a soma das outras duas (A+B). Imprime as três matrizes. int[][] A=new int[3][3], B=new int[3][3], C=new int[3][3]; imprima("\nMatriz A\n"); for (int i=0;i<3;i=i+1){ for (int j=0;j<3;j=j+1){ A[i][j]=leiaInt("A["+i+"]["+j+"]:"); imprima(" " + A[i][j]); } imprima("\n"); } imprima("\nMatriz B\n"); for (int i=0;i<3;i=i+1){ for (int j=0;j<3;j=j+1){ B[i][j]=leiaInt("B["+i+"]["+j+"]:"); imprima( " " + B[i][j]); } imprima("\n"); } imprima("\nMatriz C\n"); for (int i=0;i<3;i=i+1){ for (int j=0;j<3;j=j+1){ C[i][j] = A[i][j] + B[i][j]; imprima(" " + C[i][j]); } imprima("\n"); } A[0][1] = 15 Indica que o elemento da linha 0 e coluna 1 é 15. 31 Exemplo 2: Lê uma matriz 3x3 e imprime os seguintes valores: - Soma dos elementos posicionados nas colunas pares. - O dobro de cada elemento da segunda linha (linha 1). int[][] mat=new int[2][4]; int somaColPares=0, dobro; for (int i=0;i<2;i=i+1){ for (int j=0;j<4;j=j+1){ mat[i][j]=leiaInt("mat["+i+"]["+j+"]:"); imprima(" " + mat[i][j]); if (j%2 == 0) { somaColPares = somaColPares + mat[i][j]; } } imprima("\n"); } imprima("\nSoma dos elementos das colunas pares: " + somaColPares + "\n"); for (int j=0; j<4;j++) { dobro = 2*mat[1][j]; imprima("\nDobro = " + dobro); } Exercícios de fixação 1. Escreva um algoritmo que leia uma matriz, de ordem 3x3. Depois, calcule e imprima quantas vezes o último elemento aparece nessa matriz e em que posições (linha e coluna) ele está armazenado. 2. Escreva um algoritmo que leia os dados de uma matriz de inteiros 5x5 e crie um vetor preenchido com os elementos da primeira linha desta matriz. 3. Escreva um algoritmo que leia uma matriz, de ordem 3x3. Depois, calcule e imprima o maior elemento e quantas vezes ele aparece nessa matriz. 4. Escreva um algoritmo que leia uma matriz A, ordem 4x4, e imprima os seguintes dados: a. A soma dos elementos pares; b. Produto dos elementos da diagonal principal. Exemplo: Na tabela a seguir, a diagonal principal está destacada. Col 0 Col 1 Col 2 Col 3 Lin 0 2 3 5 10 Lin 1 11 2 15 7 Lin 2 2 3 8 9 Lin 3 10 4 7 10 32 5. Escreva um algoritmo que leia os dados de uma matriz de caracteres 5x4, que armazena uma palavra de 4 letras em cada linha. Depois, calcule e apresente quantas palavras começam e terminam com a mesma letra. 6. Faça um algoritmo que leia uma matriz M [10, 10] e imprima: a. o menor elemento de cada linha da matriz; b. quantidade de elementos negativos; c. posição ocupada (linha e coluna) por um elemento cujo valor será lido via teclado, após a impressão dos valores anteriores. Caso este elemento não exista imprima “o elemento não existente”. 7. Implementar um algoritmo que leia uma matriz A (2x3) e crie uma matriz B (3x2), sendo que B é a matriz transposta de A. Transpor uma matriz significa transformar suas linhas em colunas e vice-versa. Exemplo: 1 2 3 4 5 6 1 4 2 5 3 6 t 8. Escreva um algoritmo que crie uma matriz, de ordem 8X8, preenchida com a seguinte formação: Todos os elementos da primeira linha são preenchidos com 0; Todos os elementos da segunda linha são preenchidos com 1; Todos os elementos da terceira linha são preenchidos com 2; E assim sucessivamente. 9. Escreva um algoritmo que leia uma matriz de inteiros 3x4. Depois, crie e imprima 2 vetores, sendo que: o primeiro vetor é formado com os elementos da linha 0 da matriz; o segundo vetor é formado pelos elementos da coluna 1 da matriz. 10. Faça um algoritmo que preencha e imprima uma matriz NxN. Depois, apresente o maior elemento de cada linha. 11. Escreva um algoritmo que leia dois vetores A e B com N elementos inteiros cada. Construir uma matriz C (2xN), com a seguinte formação: a primeira linha deverá ser formada pelos elementos do vetor A e a segunda linha pelos elementos do vetor B. 12. Uma revendedora de motos faz a folha mensal de pagamento de seus 30 vendedores baseada nos dados armazenados em uma matriz (30x2) e um vetor de 30 elementos, sendo que: o vetor armazena a classe do vendedor (‘A’ ou ‘B’); a coluna 0 da matriz corresponde a quantidade de motos pequenas vendidas pelo vendedor; a coluna 1 da matriz corresponde a quantidade de motos grandes vendidas pelo vendedor; o índice do vetor e a linha da matriz correspondem ao código do vendedor. Faça um algoritmo que leia os dados da matriz e do vetor, determine e imprima o salário de cada um dos vendedores. As informações para o cálculo do salário dos vendedores são: O valor base do salário da classe ‘A’ é R$ 780,00 e da classe ‘B’ é R$ 10000,00; A comissão para cada moto pequena vendida é R$ 100,00; A comissão para cada moto grande vendida é R$ 250,00. 33 13. Uma loja controla o estoque de suas mercadorias armazenando em uma tabela (matriz) a quantidade em estoque e o valor unitário das mercadorias, como mostra o exemplo a seguir, sendo que a linha da matriz representa o código do produto. Quantidade em estoque Valor unitário 100 5.00 50 16.00 30 20.00 ... 50 3.00 Escreva um algoritmo que: a. Leia os dados de 50 mercadorias e armazene na matriz MERCADORIA. b. Calcule e imprima o código e o valor da mercadoria mais barata. c. Crie e imprima um vetor TOTAL preenchido com o valor total em estoque de cada uma das mercadorias, sendo que o índice do vetor corresponde ao código do produto. Declare a matriz e o vetor com o tipo double. 14. Escreva um algoritmo que leia uma matriz cujo conteúdo é a população dos 10 municípios mais populosos de cada um dos 23 estados brasileiros. Determine e imprima o número do município mais populoso e o número do estado a que ele pertence. Considerando que a 1ª coluna contém sempre a população da capital do estado, calcular a média da população das capitais dos 23 estados. Imprima a média da população de cada estado. 15. Escreva um algoritmo que crie uma matriz A, ordem 100x50, preenchida da seguinte forma. Col 0 Col 1 Col 2 Col 3 ... Lin 0 0 1 2 3 ... Lin 1 1 2 3 4 ... Lin 2 2 3 4 5 ... Lin 3 3 4 5 6 ... ... ... ... ... ... ... Depois, imprima a matriz resultante. 34 16. As pontuações das provas dos 2000 candidatos do vestibular de uma instituição são armazenadas em uma matriz PONT (2000x3), de forma que: a linha da matriz corresponde ao código do aluno; cada coluna da matriz guarda a pontuação de uma prova do candidato: a primeira coluna (0) guarda a nota de português; a segunda coluna (1) guarda a nota de matemática; e a terceira coluna (2) guarda a nota da redação. Baseando-se nessas informações, faça um algoritmo que leia os dados da matriz, determine e imprima: a. para cada aluno, o código e a sua pontuação total no vestibular; b. a maior nota da redação. 17. Elabore um algoritmo que leia um vetor A de 5 posições. Após a leitura deste vetor construa uma matriz B (5 x 5), definida da seguinte forma: A primeira linha da matriz é gerada pegando-se os elementos do vetor, e subtraindo cada um deles de 0; A segunda linha da matriz é gerada pegando-se os elementos do vetor, e subtraindo cada uma deles de 1; A terceira linha da matriz é gerada pegando-se os elementos do vetor, e subtraindo cada uma deles de 2; E assim sucessivamente; Depois, imprima o vetor e a matriz resultante.
Compartilhar