·

Ciências Biológicas ·

Introdução à Lógica e Programação

Send your question to AI and receive an answer instantly

Ask Question

Preview text

Variáveis Homogêneas Unidimensionais Monael Pinheiro Ribeiro DSc Universidade Federal do ABC Centro de Matemática Computação e Cognição Vetores Definição É um conjunto de variáveis de mesmo tipo que É referenciada por um único identificador É indexada e Cada elemento se diferencia através do índice Possui uma dimensão Para acessar o valor é necessário referenciar um índice Vetores Motivação Quando é necessário manipular muitas variáveis de um mesmo tipo com um mesmo significado Exemplo Ler a idade altura peso e gênero de 100 atletas calcular a quantidade de atletas homens acima da média de altura dos homens e a quantidade de atletas mulheres abaixo da média de peso das mulheres Vetores Motivação Ler a idade altura peso e gênero de 100 atletas calcular a quantidade de atletas homens acima da média de altura dos homens e a quantidade de atletas mulheres abaixo da média de peso das mulheres import javautilScanner public class Atletas public static void mainString args int idade1 idade2 idade3 idade100 float altura1 altura2 altura3 altura100 float peso1 peso2 peso3 peso100 char gen1 gen2 gen3 gen100 Scanner scan new ScannerSystemin SystemoutprintInforme a idade do 1o atleta idade1 scannextInt Systemoutprint Informe a altura do 1o atleta altura1 scannextFloat Systemoutprint Informe o peso do 1o atleta peso1 scannextFloat Systemoutprint Informe o genero do 1o atleta gen1 scannextcharAt0 SystemoutprintInforme a idade do 100o atleta idade100 scannextInt Systemoutprint Informe a altura do 100o atleta altura100 scannextFloat Systemoutprint Informe o peso do 100o atleta peso100 scannextFloat Systemoutprint Informe o genero do 100o atleta gen100 scannextcharAt0 Vetores Motivação Em casos como esse onde devemos manipular uma grande quantidade de informações com o mesmo tipo e o mesmo significado o emprego de vetores diminui o tamanho do programa e facilita a manipulação da informação Vetores Motivação Em casos como esse onde devemos manipular uma grande quantidade de informações com o mesmo tipo e o mesmo significado o emprego de vetores diminui o tamanho do programa e facilita a manipulação da informação COMO Vetores Idéia Ao invés de termos 100 variáveis para armazenar a idade de cada atleta Vetores Idéia Ao invés de termos 100 variáveis para armazenar a idade de cada atleta idade3 idade5 idade4 idade7 idade8 idade6 idade9 idade16 idade15 idade19 idade13 idade18 idade10 idade21 idade17 idade14 idade22 idade20 idade1 idade2 idade11 idade12 idade5 Vetores Idéia Ao invés de termos 100 variáveis para armazenar a idade de cada atleta Teremos uma única variável que armazenará 100 inteiros e terá o mesmo identificador idade3 idade5 idade4 idade7 idade8 idade6 idade9 idade16 idade15 idade19 idade13 idade18 idade10 idade21 idade17 idade14 idade22 idade20 idade1 idade2 idade11 idade12 idade5 Vetores Idéia Ao invés de termos 100 variáveis para armazenar a idade de cada atleta Teremos uma única variável que armazenará 100 inteiros e terá o mesmo identificador idade3 idade5 idade4 idade7 idade8 idade6 idade9 idade16 idade15 idade19 idade13 idade18 idade10 idade21 idade17 idade14 idade22 idade20 idade1 idade2 idade11 idade12 idade5 idades Vetores Idéia Todo vetor tratase de uma variável indexada Ou seja cada elemento reside em um índice do vetor E para manipular os valores em um vetor você deve sempre referenciar seus índices Exemplo A seguir temos um vetor de inteiros chamado numVet de 25 posições Ou seja ele armazena 25 inteiros do índice 0 ao índice 24 numVet 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 Vetores Declaração Sintaxe Exemplo declaração de um vetor de inteiros chamado vet com 10 elementos Exemplo declaração de um vetor de flutuantes chamado pesos com 100 elementos tipo nomedavariavel new tipotamanho int vet new int10 float pesos new float100 vet 0 1 2 3 4 5 6 7 8 9 Vetores Acessando os índices de um vetor Vet 0 1 2 3 4 5 6 7 8 9 Vetores Acessando os índices de um vetor Sintaxe Vet 0 1 2 3 4 5 6 7 8 9 nomedavariavel indice valor Vetores Acessando os índices de um vetor Sintaxe Exemplo atribuir 5 ao vetor Vet no índice 1 Vet 0 1 2 3 4 5 6 7 8 9 5 nomedavariavel indice valor Vet1 5 Vetores Acessando os índices de um vetor Sintaxe Exemplo atribuir 5 ao vetor Vet no índice 1 Exemplo atribuir 7 ao vetor Vet no índice 0 Vet 0 1 2 3 4 5 6 7 8 9 7 5 nomedavariavel indice valor Vet1 5 Vet0 7 Vetores Lendo e imprimindo valores a partir de um vetor Igual se faz com uma variável não vetor porém jamais se esqueça de informar o índice Leitura Ler um flutuante via teclado e armazenar no índice 5 do vetor pesos Impressão Imprimir na tela o valor armazenado no índice 3 do vetor pesos pesos5 scannextFloat Systemoutprintlnpesos3 Vetores Exemplo de Motivação Ler a idade altura peso e gênero de 100 atletas calcular a quantidade de atletas homens acima da média de altura dos homens e a quantidade de atletas mulheres abaixo da média de peso das mulheres Vetores import javautilScanner public class Atletas public static void mainString args int idades new int100 float alturas new float100 float pesos new float100 char generos new char100 Scanner scan new ScannerSystemin SystemoutprintInforme a idade do 1o atleta idades0 scannextInt Systemoutprint Informe a altura do 1o atleta alturas0 scannextFloat Systemoutprint Informe o peso do 1o atleta pesos0 scannextFloat Systemoutprint Informe o sexo do 1o atleta sexos0 scannextcharAt0 SystemoutprintInforme a idade do 100o atleta idades99 scannextInt Systemoutprint Informe a altura do 100o atleta alturas99 scannextFloat Systemoutprint Informe o peso do 100o atleta pesos99 scannextFloat Systemoutprint Informe o sexo do 100o atleta sexos99 scannextcharAt0 Vetores import javautilScanner public class Atletas public static void mainString args int idades new int100 float alturas new float100 float pesos new float100 char generos new char100 Scanner scan new ScannerSystemin SystemoutprintInforme a idade do 1o atleta idades0 scannextInt Systemoutprint Informe a altura do 1o atleta alturas0 scannextFloat Systemoutprint Informe o peso do 1o atleta pesos0 scannextFloat Systemoutprint Informe o genero do 1o atleta generos0 scannextcharAt0 SystemoutprintInforme a idade do 100o atleta idades99 scannextInt Systemoutprint Informe a altura do 100o atleta alturas99 scannextFloat Systemoutprint Informe o peso do 100o atleta pesos99 scannextFloat Systemoutprint Informe o generos do 100o atleta generos99 scannextcharAt0 Vetores import javautilScanner public class Atletas public static void mainString args int idades new int100 float alturas new float100 float pesos new float100 char generos new char100 Scanner scan new ScannerSystemin SystemoutprintInforme a idade do 1o atleta idades0 scannextInt Systemoutprint Informe a altura do 1o atleta alturas0 scannextFloat Systemoutprint Informe o peso do 1o atleta pesos0 scannextFloat Systemoutprint Informe o genero do 1o atleta generos0 scannextcharAt0 SystemoutprintInforme a idade do 100o atleta idades99 scannextInt Systemoutprint Informe a altura do 100o atleta alturas99 scannextFloat Systemoutprint Informe o peso do 100o atleta pesos99 scannextFloat Systemoutprint Informe o generos do 100o atleta generos99 scannextcharAt0 Vetores Como manipular eficientemente vetores Vetores Como manipular eficientemente vetores O que faz o programa a seguir 1 public static void mainString args 2 3 int i vetor new int10 4 fori0 i10 i 5 6 vetori 7 8 Vetores Como manipular eficientemente vetores O que faz o programa a seguir 1public static void mainString args 2 3 int i vetor new int10 4 fori0 i10 i 5 6 vetori 7 8 vetor 0 1 2 3 4 5 6 7 8 9 i 0 Vetores Como manipular eficientemente vetores O que faz o programa a seguir vetor 0 1 2 3 4 5 6 7 8 9 i 1 1public static void mainString args 2 3 int i vetor new int10 4 fori0 i10 i 5 6 vetori 7 8 Vetores Como manipular eficientemente vetores O que faz o programa a seguir vetor 0 1 2 3 4 5 6 7 8 9 i 2 1public static void mainString args 2 3 int i vetor new int10 4 fori0 i10 i 5 6 vetori 7 8 Vetores Como manipular eficientemente vetores O que faz o programa a seguir vetor 0 1 2 3 4 5 6 7 8 9 i 3 1public static void mainString args 2 3 int i vetor new int10 4 fori0 i10 i 5 6 vetori 7 8 Vetores Como manipular eficientemente vetores O que faz o programa a seguir vetor 0 1 2 3 4 5 6 7 8 9 i 4 1public static void mainString args 2 3 int i vetor new int10 4 fori0 i10 i 5 6 vetori 7 8 Vetores Como manipular eficientemente vetores O que faz o programa a seguir vetor 0 1 2 3 4 5 6 7 8 9 i 5 1public static void mainString args 2 3 int i vetor new int10 4 fori0 i10 i 5 6 vetori 7 8 Vetores Como manipular eficientemente vetores O que faz o programa a seguir vetor 0 1 2 3 4 5 6 7 8 9 i 6 1public static void mainString args 2 3 int i vetor new int10 4 fori0 i10 i 5 6 vetori 7 8 Vetores Como manipular eficientemente vetores O que faz o programa a seguir vetor 0 1 2 3 4 5 6 7 8 9 i 7 1public static void mainString args 2 3 int i vetor new int10 4 fori0 i10 i 5 6 vetori 7 8 Vetores Como manipular eficientemente vetores O que faz o programa a seguir vetor 0 1 2 3 4 5 6 7 8 9 i 8 1public static void mainString args 2 3 int i vetor new int10 4 fori0 i10 i 5 6 vetori 7 8 Vetores Como manipular eficientemente vetores O que faz o programa a seguir vetor 0 1 2 3 4 5 6 7 8 9 i 9 1public static void mainString args 2 3 int i vetor new int10 4 fori0 i10 i 5 6 vetori 7 8 Vetores Como manipular eficientemente vetores O que faz o programa a seguir vetor 0 1 2 3 4 5 6 7 8 9 i 10 1public static void mainString args 2 3 int i vetor new int10 4 fori0 i10 i 5 6 vetori 7 8 Vetores Como manipular eficientemente vetores O que faz o programa a seguir vetor 0 1 2 3 4 5 6 7 8 9 Visita todos os índices do vetor nesta ordem 1public static void mainString args 2 3 int i vetor new int10 4 fori0 i10 i 5 6 vetori 7 8 Vetores Como manipular eficientemente vetores O que faz o programa a seguir vetor 0 1 2 3 4 5 6 7 8 9 Visita todos os índices do vetor nesta ordem Fazendo o que 1public static void mainString args 2 3 int i vetor new int10 4 fori0 i10 i 5 6 vetori 7 8 Vetores Como manipular eficientemente vetores O que faz o programa a seguir vetor 0 1 2 3 4 5 6 7 8 9 Visita todos os índices do vetor nesta ordem Fazendo o que NADA 1public static void mainString args 2 3 int i vetor new int10 4 fori0 i10 i 5 6 vetori 7 8 Vetores Como manipular eficientemente vetores O que faz o programa a seguir vetor 0 1 2 3 4 5 6 7 8 9 Visita todos os índices do vetor nesta ordem Fazendo o que NADA E o que eu faço com isso 1public static void mainString args 2 3 int i vetor new int10 4 fori0 i10 i 5 6 vetori 7 8 Vetores Como manipular eficientemente vetores O que faz o programa a seguir vetor 0 1 2 3 4 5 6 7 8 9 Visita todos os índices do vetor nesta ordem Fazendo o que NADA E o que eu faço com isso TUDO 1public static void mainString args 2 3 int i vetor new int10 4 fori0 i10 i 5 6 vetori 7 8 Vetores Como manipular eficientemente vetores Lendo valores via teclado Vetores Como manipular eficientemente vetores Lendo valores via teclado 01import javautilScanner 02public class Exemplo 03 04 public static void mainString args 05 06 int i vetor new int10 07 Scanner scan new ScannerSystemin 08 fori0 i10 i 09 10 vetori scannextInt 11 12 13 Vetores Como manipular eficientemente vetores Imprimindo valores na tela Vetores Como manipular eficientemente vetores Imprimindo valores na tela 01import javautilScanner 02public class Exemplo03 03 04 public static void mainString args 05 06 int i vetor new int10 07 Scanner scan new ScannerSystemin 08 fori0 i10 i 09 10 Systemoutprintvetori 11 12 13 Vetores Como manipular eficientemente vetores Somando os valores de cada índice Vetores Como manipular eficientemente vetores Somando os valores de cada índice 01import javautilScanner 02public class Exemplo 03 04 public static void mainString args 05 06 int i soma0 vetor new int10 07 Scanner scan new ScannerSystemin 08 fori0 i10 i 09 10 soma soma vetori 11 12 13 Vetores Exemplo de Motivação Ler a idade altura peso e gênero de 100 atletas calcular a quantidade de atletas homens acima da média de altura dos homens e a quantidade de atletas mulheres abaixo da média de peso das mulheres Atletas Vetores public class Atletas public static void mainString args int idades i qtdMasc0 qtdFem0 qtdMascAcimaAlt0 qtdFemAbaixoPeso0 float alturas pesos somaAltMasc0f somaPesoFem0f mediaAltMasc mediaPesoFem char generos Scanner scan new ScannerSystemin idades new int100 alturas new float100 pesos new float100 generos new char100 fori0 i100 i Systemoutprint Informe a idade do i1 o atleta idadesi scannextInt Systemoutprint Informe a altura do i1 o atleta alturasi scannextFloat Systemoutprint Informe a peso do i1 o atleta pesosi scannextFloat Systemoutprint Informe a genero do i1 o atleta generosi scannextcharAt0 ifgenerosi M somaAltMasc somaAltMasc alturasi qtdMasc else somaPesoFem somaPesoFem pesosi qtdFem fori0 i100 i ifqtdMasc 0 alturasi somaAltMascqtdMasc generosi M qtdMascAcimaAlt ifqtdFem 0 pesosi somaPesoFemqtdFem generosi F qtdFemAbaixoPeso Vetores fori0 i100 i ifqtdMasc 0 alturasi somaAltMascqtdMasc generosi M qtdMascAcimaAlt ifqtdFem 0 pesosi somaPesoFemqtdFem generosi F qtdFemAbaixoPeso ifqtdMasc 0 SystemoutprintlnHa qtdMascAcimaAlt atletas homens acima da media da altura dos homens else SystemoutprintlnNao houve entrada de atletas homens ifqtdFem 0 SystemoutprintlnHa qtdFemAbaixoPeso atletas mulheres abaixo da media do peso das mulheres else SystemoutprintlnNao houve entrada de atletas mulheres Vetores Cuidados Jamais ultrapasse os limites do vetor Linguagem JAVA trata a extrapolação dos limites do vetor Deste modo caso você ultrapasse os limites estabelecidos ascenderá uma excessão ArrayIndexOutOfBoundsException Vetores Passagem de Parâmetros Por padrão na Linguagem JAVA todo vetor é automaticamente passado por referência Atenção É necessário explicitar o recebimento de um vetor no cabeçalho da função Vetores Passagem de Parâmetros exemplo Suponha a função exVet que recebe um vetor de inteiros e um inteiro Invocando exVet Cabeçalho da função exVet exVet vetor n void exVet int v int n Não é necessário explicitar a passagem de um vetor Entretanto é necessário explicitar o recebimento de um vetor Vetores Passagem de Parâmetro exemplo Faça uma função chamada scanVetor que recebe um vetor de inteiros e um inteiro representando o limite do vetor e leia via teclado os elemento do índice 0 até o índice limite Vetores Passagem de Parâmetro exemplo Faça uma função chamada scanVetor que recebe um vetor de inteiros e um inteiro representando o limite do vetor e leia via teclado os elemento do índice 0 até o índice limite public void scanVetorint v int lim int i Scanner scan new ScannerSystemin fori0 ilim i Systemoutprint Informe o elemento no indice i vi scannextInt Vetores Passagem de Parâmetro exemplo Faça uma função chamada scanVetor que recebe um vetor de inteiros e um inteiro representando o limite do vetor e leia via teclado os elemento do índice 0 até o índice limite int vetor new int100 scanVetorvetor 50 Exemplo de chamada public void scanVetorint v int lim int i Scanner scan new ScannerSystemin fori0 ilim i Systemoutprint Informe o elemento no indice i vi scannextInt Exercícios MENOR E POSIÇÃO Faça um programa que leia um valor N Este N será o tamanho de um vetor XN A seguir leia cada um dos valores de X encontre o menor elemento deste vetor e a sua posição dentro do vetor mostrando esta informação Entrada A primeira linha de entrada contem um único inteiro N 1 N 1000 indicando o número de elementos que deverão ser lidos em seguida para o vetor XN de inteiros A segunda linha contém cada um dos N valores separados por um espaço Saída A primeira linha apresenta a mensagem Menor valor seguida de um espaço e do menor valor lido na entrada A segunda linha apresenta a mensagem Posicao seguido de um espaço e da posição do vetor na qual se encontra o menor valor lido lembrando que o vetor inicia na posição zero Entrada Saída 10 1 2 3 4 5 6 7 8 9 10 Menor valor 5 Posicao 4 Exercícios FIBONACCI EM VETOR Faça um programa que leia um valor e apresente o número de Fibonacci correspondente a este valor lido Lembre que os 2 primeiros elementos da série de Fibonacci são 0 e 1 e cada próximo termo é a soma dos 2 anteriores a ele Todos os valores de Fibonacci calculados neste problema devem caber em um inteiro de 64 bits sem sinal Entrada A primeira linha da entrada contém um inteiro T indicando o número de casos de teste Cada caso de teste contém um único inteiro N 0 N 60 correspondente ao Nesimo termo da série de Fibonacci Saída Para cada caso de teste da entrada imprima a mensagem FibN X onde X é o Nésimo termo da série de Fibonacci Entrada Saída 3 0 4 2 Fib0 0 Fib4 3 Fib2 1