Você está na página 1de 82

Bacharelado em Ciência e Tecnologia

Processamento da Informação

Vetores
Unidimensionais
Parte II - Exercícios

Material elaborado pelos professores da UFABC.


Bacharelado em Ciência e Tecnologia
Processamento da Informação

Relembrando VETOR, utilizando módulos em Java


public class Main {
static java.util.Scanner entrada = new java.util.Scanner(System.in);
public static void main(String[] args) {
System.out.print("Digite o tamanho do vetor:");
int TAMANHO = entrada.nextInt();
double nota[]; // vetor de referência de double

nota = lerVetor(TAMANHO); // Método de entrada:


Estes dois
imprimirVetor(nota); // Método para imprimir vetor métodos
}
static double[] lerVetor (int n) {
lerVetor e
// leitura dos n elementos do vetor imprimirVetor
double[] v = new double[n]; // SOMENTE AQUI ALOCA MEMÓRIA P/ n ELEMENTOS
for (int i = 0; i < v.length; i++) { sempre
System.out.print("Digite um numero inteiro " + i + ": ");
v[i] = entrada.nextInt(); poderão ser
}
return v;
utilizados em
} problemas
static void imprimirVetor (double[] v) {
for (int i = 0; i < v.length; i++) { semelhantes
}
System.out.print(" " + v[i]); com vetores!
System.out.println();
}
}

quando um método não retorna variáveis, incluir Degustar este código em https://repl.it/languages/java
Bacharelado em Ciência e Tecnologia
Processamento da Informação

public class Main {


static java.util.Scanner entrada = new java.util.Scanner(System.in);
public static void main(String[] args) {
Solução 1.
System.out.print("Digite o tamanho do vetor:");
int TAMANHO = entrada.nextInt();
double notas[]; // vetor de referência de double

notas = lerVetor(TAMANHO); // Método de entrada:


imprimirVetor(notas); // Método para imprimir vetor
// Processamento
double media = mediaVetor(notas);
int cont = contVetor(media, notas);
System.out.println("Existem "+cont+" notas acima da media " + media);
}
Observe que o
static double mediaVetor (double[] v) {
double soma = 0; método
for (int i = 0; i < v.length; i++)
soma += v[i];
mediaVetor
return soma/v.length; retorna a média e
}
static int contVetor (double media, double[] v) {
contVetor utiliza
int cont = 0; dois argumentos.
for (int i = 0; i < v.length; i++)
if (v[i]>media)
cont++;
return cont;
}
// …
}

incluir lerVetor e imprimirVetor


Bacharelado em Ciência e Tecnologia
Processamento da Informação

Exercício 1
Bacharelado em Ciência e Tecnologia
Processamento da Informação

Escreva um programa ler dois vetores (A e B) de 10


elementos cada. Após a entrada de dados, o programa
deve:
▪Obter e exibir a soma dos elementos do vetor A
▪Obter e exibir a soma dos elementos do vetor B
▪Calcular e exibir a média dos elementos dos dois vetores (uma única
média)
▪Imprimir o vetor A e depois o vetor B
▪Mostrar os elementos de A e B que são acima da média de ambos

▪ SAÍDA DE DADOS?
Bacharelado em Ciência e Tecnologia
Processamento da Informação

Escreva um programa ler dois vetores (A e B) de 10


elementos cada. Após a entrada de dados, o programa
deve:
▪Obter e exibir a soma dos elementos do vetor A
▪Obter e exibir a soma dos elementos do vetor B
▪Calcular e exibir a média dos elementos dos dois vetores (uma única
média)
▪Imprimir o vetor A e depois o vetor B
▪Mostrar os elementos de A e B que são acima da média de ambos

▪ SAÍDA: soma do vetor A (somaA), soma do vetor B (soma B),


media dos dois vetores (mediaAB), exibir vetor A, exibir vetor
B, exibir elementos de A e B acima de mediaAB.
Bacharelado em Ciência e Tecnologia
Processamento da Informação

Escreva um programa ler dois vetores (A e B) de 10


elementos cada. Após a entrada de dados, o programa
deve:
▪Obter e exibir a soma dos elementos do vetor A
▪Obter e exibir a soma dos elementos do vetor B
▪Calcular e exibir a média dos elementos dos dois vetores (uma única
média)
▪Imprimir o vetor A e depois o vetor B
▪Mostrar os elementos de A e B que são acima da média de ambos
▪ ENTRADA DE DADOS: os vetores A e B
Bacharelado em Ciência e Tecnologia
Processamento da Informação

SOLUÇÃO 1
Bacharelado em Ciência e Tecnologia
Processamento da Informação

DECLARAÇÃO DE VARIÁVEIS E ENTRADA DE DADOS


Bacharelado em Ciência e Tecnologia
Processamento da Informação

- Obter e exibir a soma dos elementos do vetor A


PROCESSAMENTO [1]: - Obter e exibir a soma dos elementos do vetor B

Note que poderíamos usar um ÚNICO laço de repetição para somar os


DOIS vetores. Propositalmente, optou-se por tratar cada problema
(de somar cada vetor) como um problema específico.
Bacharelado em Ciência e Tecnologia
Processamento da Informação

- Calcular e exibir a média dos elementos


PROCESSAMENTO [2] dos dois vetores (uma única média)
- Imprimir o vetor A e depois o vetor B
Bacharelado em Ciência e Tecnologia
Processamento da Informação

PROCESSAMENTO [3] Mostrar os elementos de A e B que


são acima da média de ambos
Bacharelado em Ciência e Tecnologia
Processamento da Informação

SOLUÇÃO COMPLETA (53 LINHAS DE PROGRAMA)


Bacharelado em Ciência e Tecnologia
Processamento da Informação

SOLUÇÃO COMPLETA (53 LINHAS DE PROGRAMA)


Bacharelado em Ciência e Tecnologia
Processamento da Informação

SOLUÇÃO COMPLETA
Bacharelado em Ciência e Tecnologia
Processamento da Informação

Análise da Solução
▪ O programa completo possui cerca de 53 linhas
▪ Há diversos trechos no programa que são
“repetitivos”, ou seja, fazem a “mesma” coisa,
mudando-se apenas a “variável”
Bacharelado em Ciência e Tecnologia
Processamento da Informação

Trecho repetitivo: ENTRADA DE DADOS

O “mesmo trecho” para ENTRADA DE DADOS dos vetores! Muda


apenas o nome da variável.
Bacharelado em Ciência e Tecnologia
Processamento da Informação

Trecho repetitivo: SOMA ELEMENTOS VETOR

O “mesmo trecho” para SOMA DOS ELEMENTOS dos vetores! Muda


apenas o nome da variável.
Bacharelado em Ciência e Tecnologia
Processamento da Informação

Trecho repetitivo: IMPRIME VETOR

O “mesmo trecho” para IMPRIMIR VETOR! Muda apenas o nome da


variável.
Bacharelado em Ciência e Tecnologia
Processamento da Informação

Trecho repetitivo: ELEMENTOS ACIMA MEDIA

O “mesmo trecho” para MOSTRAR ELEMENTOS ACIMA DA MÉDIA!


Muda apenas o nome da variável.
Bacharelado em Ciência e Tecnologia
Processamento da Informação

ANÁLISE DA SOLUÇÃO
▪ Trechos repetitivos é um convite ao REUSO!
▪ Cada “parte” do programa tem uma FINALIDADE
ESPECÍFICA:
▪ Ler o vetor (subproblema 1)
▪ Somar os elementos do vetor (subproblema 2)
▪ Imprimir os elementos do vetor (subproblema 3)
▪ Exibir os elementos acima da media (subproblema 4)
▪ Reuso e Problemas com finalidade específica é um
convite a MODULARIZAÇÃO!!!
Bacharelado em Ciência e Tecnologia
Processamento da Informação

SOLUÇÃO
MODULARIZADA
Primeiro vamos ver a solução
modularizada, para entendermos suas
vantagens! Em seguida vamos aprender a
escrever os módulos (funções)
Bacharelado em Ciência e Tecnologia
Processamento da Informação
Bacharelado em Ciência e Tecnologia
Processamento da Informação

Modularizando
▪ Primeiro, vamos pegar cada trecho específico, um
a um, e transformá-lo numa função

Comecemos pela ENTRADA DE DADOS


Bacharelado em Ciência e Tecnologia
Processamento da Informação

MODULARIZANDO A ROTINA
“LEITURA VETOR”
Bacharelado em Ciência e Tecnologia
Processamento da Informação

Modularizando – ENTRADA DE DADOS


▪ O que difere entre os dois trechos é apenas a
variável do “leia”
Bacharelado em Ciência e Tecnologia
Processamento da Informação

Modularizando – ENTRADA DE DADOS


▪ Note que os trechos são IDÊNTICOS!
▪ Apenas “criamos” uma nova função, demos um nome a ela
(Leitura_Vetor) e agora podemos CHAMÁ-LA
▪ Daqui a pouco entenderemos melhor os detalhes da criação da
função: nome, parâmetros, etc.
Bacharelado em Ciência e Tecnologia
Processamento da Informação

Modularizando - ENTRADA DE DADOS


▪ Existindo a função podemos CHAMÁ-LA como fazemos
com funções existentes (potencia, raiz, etc)
▪ Note que “Leitura_Vetor” é chamada duas vezes: uma para
A e outra para B
Bacharelado em Ciência e Tecnologia
Processamento da Informação

MODULARIZANDO A ROTINA
“SOMA VETOR”
Bacharelado em Ciência e Tecnologia
Processamento da Informação

Modularizando – SOMA VETOR


▪ O que difere os dois trechos?
Bacharelado em Ciência e Tecnologia
Processamento da Informação

Modularizando – SOMA VETOR


▪ Note que os trechos são IDÊNTICOS!
▪ Apenas “criamos” uma nova função, demos um nome a ela
(Soma_Vetor) e agora podemos CHAMÁ-LA
▪ Daqui a pouco entenderemos melhor os detalhes da criação da
função : nome, parâmetros, etc.
Bacharelado em Ciência e Tecnologia
Processamento da Informação

Modularizando - SOMA VETOR


▪ Existindo a função podemos CHAMÁ-LA como fazemos
com funções existentes (potencia, raiz, etc)
▪ Note que “Soma_Vetor” é chamada duas vezes: uma para A
e outra para B
Bacharelado em Ciência e Tecnologia
Processamento da Informação

MODULARIZANDO A ROTINA
“IMPRIME VETOR”
Bacharelado em Ciência e Tecnologia
Processamento da Informação

Modularizando – IMPRIME VETOR


▪ O que difere os dois trechos?
Bacharelado em Ciência e Tecnologia
Processamento da Informação

Modularizando – IMPRIME VETOR


▪ Note que os trechos são IDÊNTICOS!
▪ Apenas “criamos” uma nova função, demos um nome a ela
(Imprime_Vetor) e agora podemos CHAMÁ-LA
▪ Daqui a pouco entenderemos melhor os detalhes da criação da
função : nome, parâmetros, etc.
Bacharelado em Ciência e Tecnologia
Processamento da Informação

Modularizando - IMPRIME VETOR


▪ Existindo a função podemos CHAMÁ-LA como fazemos
com funções existentes (potencia, raiz, etc)
▪ Note que “Imprime_Vetor” é chamada duas vezes: uma para
A e outra para B
Bacharelado em Ciência e Tecnologia
Processamento da Informação

MODULARIZANDO A ROTINA
“IMPRIME ACIMA MEDIA”
Bacharelado em Ciência e Tecnologia
Processamento da Informação

Modularizando – IMPRIME ACIMA DA MÉDIA


▪ O que difere os dois trechos?
Bacharelado em Ciência e Tecnologia
Processamento da Informação

Modularizando – IMPRIME ACIMA DA MÉDIA


▪ Note que os trechos são IDÊNTICOS!
▪ Apenas “criamos” uma nova função, demos um nome a ela
(Imprime_Acima_Media) e agora podemos CHAMÁ-LA
▪ Daqui a pouco entenderemos melhor os detalhes da criação da
função : nome, parâmetros, etc.
Bacharelado em Ciência e Tecnologia
Processamento da Informação

Modularizando - IMPRIME ACIMA DA MÉDIA


▪ Existindo a função podemos CHAMÁ-LA como fazemos
com funções existentes (potencia, raiz, etc)
▪ Note que “Imprime_Acima_Media” é chamada duas vezes:
uma para A e outra para B
Bacharelado em Ciência e Tecnologia
Processamento da Informação

SOLUÇÃO COMPLETA
Bacharelado em Ciência e Tecnologia
Processamento da Informação

FUNÇÃO INÍCIO

Note como o
programa está mais
ENXUTO (código
mais limpo)
Bacharelado em Ciência e Tecnologia
Processamento da Informação

FUNÇÕES DE USUÁRIO (CRIADAS)

AS FUNÇÕES
CRIADAS E QUE
FORAM CHAMADAS
(E REUSADAS)
Bacharelado em Ciência e Tecnologia
Processamento da Informação

Solução em Java
public class Main {
static java.util.Scanner entrada = new java.util.Scanner(System.in);

public static void main(String[] args) {


System.out.print("Digite o tamanho do vetor: ");
int TAMANHO = entrada.nextInt();

double v1[]; // vetor de referência de double


double v2[]; // vetor de referência de double

v1 = lerVetor(TAMANHO); // ler vetores


v2 = lerVetor(TAMANHO);

// Processamento
double soma1 = somaVetor(v1);
System.out.println("Soma v1: " + soma1);
double soma2 = somaVetor(v2);
System.out.println("Soma v2: " + soma2);

double media = (soma1 + soma2) / (2 * TAMANHO);

System.out.println("Média de v1+v2: " + media);

imprimirVetor(v1); // imprimir vetores


imprimirVetor(v2);

System.out.print("Maior(es) que média em v1: ");


maiorQueMediaVetor(media, v1);
System.out.print("\nMaior(es) que média em v2: ");
maiorQueMediaVetor(media, v2);
System.out.println();
}
// ...
Bacharelado em Ciência e Tecnologia
Processamento da Informação

Solução em Java
// ...
static double somaVetor(double[] v) {
int TAMANHO = v.length;
double soma = 0;
for (int i = 0; i < TAMANHO; i++) {
soma = soma + v[i];
}
return soma;
}
static void maiorQueMediaVetor(double media, double[] v) {
int TAMANHO = v.length;
for (int i = 0; i < TAMANHO; i++) {
if (v[i] > media) {
System.out.print(" " + v[i]);
}
}
}
static double[] lerVetor(int n) {
// leitura dos n elementos do vetor
double[] v = new double[n];
System.out.print("Digite os "+v.length+" números inteiros: ");
for (int i = 0; i < v.length; i++) {
v[i] = entrada.nextInt();
}
return v;
}
static void imprimirVetor(double[] v) {
for (int i = 0; i < v.length; i++) {
System.out.print(" " + v[i]);
}
System.out.println();
}
}
Bacharelado em Ciência e Tecnologia
Processamento da Informação

VANTAGENS DA
MODULARIZAÇÃO
Bacharelado em Ciência e Tecnologia
Processamento da Informação

Modularização - Vantagens

▪ Reaproveitamento de código (reuso)


▪ Organização
▪ Legibilidade
▪ Flexibilidade
Bacharelado em Ciência e Tecnologia
Processamento da Informação

COMO ESCREVER E ATIVAR


MÓDULOS (FUNÇÕES)
Bacharelado em Ciência e Tecnologia
Processamento da Informação

Módulos – Estrutura e Sintaxe

▪ Um programa modularizado tem:


▪ um módulo principal (função início) e
▪ outros módulos que vamos chamar de
funções de usuário
Bacharelado em Ciência e Tecnologia
Processamento da Informação
Bacharelado em Ciência e Tecnologia
Processamento da Informação

Módulos - Sintaxe

Sintaxe parecida com


O módulo principal

4- Parênteses com parâmetros


(caso exista)

3- Identificador (obrigatório)

1- Palavra funcao 2- Valor de retorno (caso exista)


(obrigatório)
Bacharelado em Ciência e Tecnologia
Processamento da Informação

PARÂMETROS
▪ São os valores ou variáveis enviadas ao
módulo, para que ele possa realizar o seu
processamento
▪ Podemos passar nenhum ou vários parâmetros
para o módulo
▪ Tudo depende da finalidade do módulo (e de
como ele foi construído)
(2) PARÂMETROS
Bacharelado em Ciência e Tecnologia
Processamento da Informação

RETORNO
▪ O Retorno de um módulo é o valor (ou valores) que o
módulo retorna para o local em que ele foi chamado

(3) RETORNO
Bacharelado em Ciência e Tecnologia
Processamento da Informação

Módulos – Sintaxe - Portugol


tipo do
palavra retorno da Identificador
funcao função (nome da função)

Parâmetros da função)

valor de retorno (caso exista)


Bacharelado em Ciência e Tecnologia
Processamento da Informação

Módulos – Sintaxe - Portugol

palavra funcao Identificador (nome da função)

Parâmetros da função)

NOTE QUE ESSA FUNÇÃO NÃO TEM RETORNO


Bacharelado em Ciência e Tecnologia
Processamento da Informação

Módulos – Sintaxe - Portugol

Sempre dentro das chaves, para


Delimitar o BLOCO do módulo
Bacharelado em Ciência e Tecnologia
Processamento da Informação

EXECUÇÃO E CHAMADA
DOS MÓDULOS
Bacharelado em Ciência e Tecnologia
Processamento da Informação

Módulos – Execução de um Módulo


▪ A chamada (ou ativação) de um módulo, representa a
execução das ações contidas nele, em seguida a
execução retorna para a instrução seguindo ao ponto
da sua chamada (que poderá ser o módulo principal ou
noutros módulos)
▪ Não existe ordem para a definição dos módulos
▪ Quem determina a execução de um MÓDULO (ou
função) é a sua chamada.
Bacharelado em Ciência e Tecnologia
Processamento da Informação

Módulos – Execução (chamada)

▪ O módulo principal (função início)


▪ É o primeiro a ser chamado quando um
programa é executado
▪ Os outros módulos são ativados (executados)
toda vez que forem chamados (pelo nome)
▪ A chamada de um módulo deve respeitar sua
definição (nome, parâmetros, etc)
Bacharelado em Ciência e Tecnologia
Processamento da Informação

Modularização - CHAMADA
Note as chamadas à função SOMA_VETOR: passando dois
parâmetros e atribuindo o valor do retorno para somaA e somaB
Bacharelado em Ciência e Tecnologia
Processamento da Informação

Modularização - CHAMADA
Note as chamadas à função IMPRIME_VETOR: passando dois
parâmetros. Não há atribuição pois a função não retorna nada!
Bacharelado em Ciência e Tecnologia
Processamento da Informação

Módulos – Execução de um Módulo

▪ Qualquer função pode chamar outra função.


▪ Um módulo pode chamar ele próprio?
▪ Recursividade! Fora do escopo da disciplina
Bacharelado em Ciência e Tecnologia
Processamento da Informação

EXEMPLO
Bacharelado em Ciência e Tecnologia
Processamento da Informação

Problema
Escreva um programa para exibir o peso ideal de uma
pessoa utilizando a formula a seguir:
▪ Masculino: 72.7 x altura – 58
▪ Feminino: 62.1 x altura – 44.7

A entrada e saída de dados poderá ser feito no módulo


principal (função início). No entanto, o calculo do peso
ideal deve ser feito em uma função específica.

▪ SAÍDA: ???
Bacharelado em Ciência e Tecnologia
Processamento da Informação

Problema
Escreva um programa para exibir o peso ideal de uma
pessoa utilizando a formula a seguir:
▪ Masculino: 72.7 x altura – 58
▪ Feminino: 62.1 x altura – 44.7

A entrada e saída de dados poderá ser feito no módulo


principal (função início). No entanto, o calculo do peso
ideal deve ser feito em uma função específica.

▪ SAÍDA: peso ideal


Bacharelado em Ciência e Tecnologia
Processamento da Informação

Problema
Escreva um programa para exibir o peso ideal de uma
pessoa utilizando a formula a seguir:
▪ Masculino: 72.7 x altura – 58
▪ Feminino: 62.1 x altura – 44.7

A entrada e saída de dados poderá ser feito no módulo


principal (função início). No entanto, o calculo do peso
ideal deve ser feito em uma função específica.

▪ SAÍDA: peso ideal

▪ ENTRADA: sexo e altura


Bacharelado em Ciência e Tecnologia
Processamento da Informação

Solução
A entrada e saída de dados poderá ser feito no módulo
principal (função início). No entanto, o calculo do peso
ideal deve ser feito em uma função específica.
Bacharelado em Ciência e Tecnologia
Processamento da Informação

Construção da Função
A entrada e saída de dados poderá ser feito no módulo
principal (função início). No entanto, o calculo do peso
ideal deve ser feito em uma função específica.
▪ Masculino: 72.7 x altura – 58
▪ Feminino: 62.1 x altura – 44.7

Para construir o módulo (função) precisamos:


1.Definir identificador (nome da função)
2.Definir os parâmetros (tipo e nome), se necessário
3.Definir tipo do retorno, se necessário
Bacharelado em Ciência e Tecnologia
Processamento da Informação

Construção da Função ▪ Masculino: 72.7 x altura – 58


▪ Feminino: 62.1 x altura – 44.7
1. Definir identificador (nome da função)
Calcula_Peso_Ideal
2. Definir os parâmetros (tipo e nome), se necessário
A função precisa receber o SEXO e ALTURA por parâmetro (já que
eles foram lidos fora da função)
3. Definir tipo do retorno, se necessário
A função deverá RETORNAR o peso ideal calculado
Bacharelado em Ciência e Tecnologia
Processamento da Informação

Construção da Função ▪ Masculino: 72.7 x altura – 58


▪ Feminino: 62.1 x altura – 44.7
Bacharelado em Ciência e Tecnologia
Processamento da Informação

Construção da Função ▪ Masculino: 72.7 x altura – 58


▪ Feminino: 62.1 x altura – 44.7
Bacharelado em Ciência e Tecnologia
Processamento da Informação

Solução Completa

CHAMADA DA FUNÇÃO
Bacharelado em Ciência e Tecnologia
Processamento da Informação

Solução Completa
Bacharelado em Ciência e Tecnologia
Processamento da Informação

PROBLEMA
Bacharelado em Ciência e Tecnologia
Processamento da Informação

Modularização
O que será impresso pelo trecho de programa abaixo?
a b c
10 20 0

100H 200H 300H

a b y
10 20 ?

600H 650H 700H


Bacharelado em Ciência e Tecnologia
Processamento da Informação

ESCOPO DE
VARIÁVEIS
Bacharelado em Ciência e Tecnologia
Processamento da Informação

Blocos

▪ Um BLOCO é delimitado por um par de chaves


{ }

▪ Um BLOCO define o ESCOPO das variáveis.


▪ A variável só existe dentro do “bloco” em que
ela foi declarada.
Bacharelado em Ciência e Tecnologia
Processamento da Informação

Módulos – Escopo LOCAL

▪ Escopo local – VARIÁVEL existe somente no


módulo (bloco) em que foi declarada.
▪ Quando a execução do módulo (função) é
finalizada a variável é “liberada” (da memória) e
os valores perdidos.
▪ Caso os valores devam “sair” da função (antes
de serem perdidos) eles precisam ser
RETORNADOS: retorne
Bacharelado em Ciência e Tecnologia
Processamento da Informação

Escopo Global
▪ Escopo global – são variáveis que podem ser utilizadas
nos módulos em que foram declaradas e também nos
módulos internos aos módulos que foram declarados

Evitem utilizar variáveis globais!


▪Ocupam mais espaço de memória, pois ocupam a
memória enquanto o programa estiver sendo
executado
▪Dê preferência pelas variáveis locais!
Bacharelado em Ciência e Tecnologia
Processamento da Informação

Coisas para recordar

▪ Obrigatório existir um módulo principal


▪ O módulo principal é criado automaticamente
▪ Para criar seus módulos você precisa pensar:
▪ No objetivo do módulo
▪ Identificador
▪ Número e tipo de parâmetros
▪ Valor de retorno
Bacharelado em Ciência e Tecnologia
Processamento da Informação

Coisas para não esquecer


▪ Um bloco é delimitado pelos CHAVES { e }.
▪ Uma variável que é declarada dentro de um módulo é
chamada de variável local e existe apenas dentro do
módulo.
▪ O módulo fica na memória durante a sua execução sendo
destruido quando última instrução é executada (ou após
um retorne).
▪ Uma variável criada fora de qualquer módulo é chamada
de variável global.
▪ A variável global existe dentro de qualquer módulo criado
dentro do programa.
Bacharelado em Ciência e Tecnologia
Processamento da Informação

AGORA É
PRATICAR!!!

Você também pode gostar