Webly: [Aula 10] Vetores - Webly

Ir para


  • (2 Páginas)
  • +
  • 1
  • 2

[Aula 10] Vetores

#1 Membro offline   tmferreira Ícone

  • Ícone
  • Grupo: Membro Amigo
  • Posts: 174
  • Cadastrado: 23-agosto 06
  • Localização:Campos dos Goytacazes - RJ
  • Interesses:Tudo relacionado à tecnologia. Adoro aprender!!!!

Postou 31 janeiro 2007 - 10:42

Fala galerinha!!! Estamos progredindo bem em nossas aulas!!

Hoje começaremos a aprender uma das mais importantes coisas ligadas aos algoritmos e resolução de problemas. Estou falando dos arranjos, mas vocês nunca devem ter ouvido falar dele com esse nome.

Arranjos

Os Arranjos são também conhecidos de duas outras formas: variáveis compostas homogêneas ou como arrays (nome mais comum).
Os Arranjos correspondem a conjuntos de elementos de um mesmo tipo (em algumas linguagens de programação é possível existir arrays de elementos de tipos variados, como números, caracteres, valores lógicos, etc), representados por um único nome. Eles podem variar quanto a sua dimensão, isto é, a quantidade de índices necessária para a individualização de cada elemento do conjunto. O arranjo unidimensional também é conhecido por vetor, enquanto o arranjo bidimensional é denominado de matriz. Exemplo:

Vetor
V = | 0 | 1  | 2 | 3 | 4 |

Matriz
M = | 00 | 01 | 02 | 03 |
	 | 10 | 11 | 12 | 13 |
	 | 20 | 21 | 22 | 23 |


Hoje abordaremos os vetores. Na próxima aula falaremos das matrizes.

VETOR

Como já foi dito, vetores são arrays unidimensionais. Por esse motivo, o acesso aos valores de um vetor é feito através de somente um índice. Para definirmos um vetor, utilizamos a seguinte sintaxe:
identificador  : array[indice_inicial..indice_final] de tipo;
 onde
			 identificador – nome de  identificador válido
			 indice_inicial – limite inferior do  intervalo de variação do índice
			 indice_final – limite superior do  intervalo de variação do índice
			 tipo – tipo primitivo dos elementos  do array

Exemplo: Declarar um vetor de 10 elementos inteiros e outro de 5 elementos caracter.
nums_inteiros  : array[0..9] de inteiro;
 frases :  array[0..4] de caracter;

Dessa maneira, se quisermos inserir valores nos elementos do vetor, faremos assim (reparem que o primeiro elemento tem índice = 0):
num_inteiros[0]  := 56;
 num_inteiros[6] :=  24;
 frases[2] := \"Teste  de Vetores\";

a visualização didática:
num_inteiros  = | 56 |	|	|	|	|	| 24 |	|	|	|
 frases		= |	|	| Teste de Vetores |	|	|


Utilização Estruturas de Repetição e Vetores

Primeiro, veremos, através de exemplos, como exibir os elementos de um vetor usando uma estrutura de repetição. Como o número de índices de um vetor é, em princípio, fixo, a estrutura de repetição mais indicada é a condicional.

Vamos ao exemplo:
INICIO
	 nosso_vetor : array[0..9] de  inteiro;
	 x : inteiro;
	 PARA x DE 0 ATÉ 10 PASSO 1 FAÇA
		 MOSTRE nosso_vetor[x];
	 IM PARA
 FIM

Agora veremos como colocar os elementos dentro do vetor.
INICIO
	 nosso_vetor : array[0..9] de  inteiro;
	 x : inteiro;
	 PARA x DE 0 ATÉ 10 PASSO 1 FAÇA
		 nosso_vetor[x] := x;
	 FIM PARA
  FIM


Vamos aos exercícios e veremos se restam dúvidas, beleza?

Exercícios
  • Quais são os dois tipos de arranjos? Como cada um destes tipos são chamados?
  • Crie um algoritmo que escreva num vetor de 20 elementos somente números pares, ou seja:
    vetor[0] = 0
    vetor[1] = 2
    vetor[2] = 4
    Utilize Estrutura de Repetição.
  • Crie um algoritmo que receba a idade de um grupo de 50 pessoas e escreva cada uma dessas idades num índice de um vetor de 50 elementos. Após a entrada dos dados no vetor, crie uma outra estrutura de repetição que leia as idades em cada índice do vetor e calcule e mostre a média das idades.
Desafio
  • Reescreva o algoritmo do exercício número 3 de forma que não sejam aceitas idades menores do que 0.

.:. Thiago Ferreira .:.
0

#2 Membro offline   shumi Ícone

  • Shumi
  • Grupo: Banidos
  • Posts: 1511
  • Cadastrado: 05-julho 06
  • Localização:São Paulo - SP
  • Interesses:TI em geral, publicidade e propaganda e crescimento

Postou 05 fevereiro 2007 - 10:16

Fala galera blz?
Até semana que vem alinharemos todas as aulas das linguagens que estão faltando
o Fabyo entrou hoje para o Time, e nem preciso falar que é um baita reforço!
o cara é o cara!

Abraços
VALEU A TODOS!!!
0

#3 Membro offline   Thiago Rodrigues Ícone

  • Ícone
  • Grupo: Membros
  • Posts: 48
  • Cadastrado: 22-dezembro 06
  • Interesses:Html + css + pradrões web + Php + Javascript + Ajax + Monetização

Postou 05 fevereiro 2007 - 11:49

1) Quais são os dois tipos de arranjos? Como cada um destes tipos são chamados?
R: Temos o arranjo unidimensional que também é conhecido por vetor e temos o arranjo bidimensional que também é conhecido como matriz.

2)
INICIO
	numeros : array[0..19] de inteiro;
	num: inteiro;
	REPITA
		ESCREVA ("Digite um número");
		LEIA(num);
		SE num mod 2 = 0 ENTAO
			numeros[x] := num;
	ATÉ (numeros[19] <> 0)
	FIM REPITA
FIM


3)
INICIO
	vetor_idade : array(0..49) de inteiro;
	x, total_idade, media : inteiro;
	PARA x DE 0 ATÉ 50 PASSO 1 FAÇA
		ESCREVA ("Digite sua idade");
		LEIA(idade);
		vetor_idade[x] := idade;
	FIM PARA
	PARA x DE 0 ATÉ 50 PASSO 1 FAÇA
		total_idade := (total_idade + vetor_idade[x]);
		media := (total_idade / 50);
	FIM PARA
	ESCREVA ("A média de idade dos entrevistados é", media);
FIM


4)
INICIO
	vetor_idade : array(0..49) de inteiro;
	x, total_idade, media : inteiro;
	REPITA
		ESCREVA ("Digite sua idade");
		LEIA(idade);
			SE idade >= 0 ENTÃO
				vetor_idade[x] := idade;
			SENÃO
				ESCREVA ("Digite um número maior que 0");
	ATÉ (vetor_idade[50] > 0)
	PARA x DE 0 ATÉ 50 PASSO 1 FAÇA
		total_idade := (total_idade + vetor_idade[x]);
		media := (total_idade / 50);
	FIM PARA
	ESCREVA ("A média de idade dos entrevistados é", media);
FIM


Bom pessoal, como podem ver, tanto no exercicio 2 como no 4 coloquei que para parar de repetir o último número do vetor tem que ser diferente de 0, ou seja, para parar todos os valores do vetor devem já estar preenchidos. Não sei se está é a forma correta.

tmferreira e shumi, estão de parabéns, aula muito boa. Que venha a próxima!
Abraços
Conheça já:
NerdGames - Tecnologia com uma pitada de diversão
www.nerdgames.net/blog
0

#4 Membro offline   shumi Ícone

  • Shumi
  • Grupo: Banidos
  • Posts: 1511
  • Cadastrado: 05-julho 06
  • Localização:São Paulo - SP
  • Interesses:TI em geral, publicidade e propaganda e crescimento

Postou 05 fevereiro 2007 - 11:53

Ver postThiago Rodrigues, em 05/02/2007 - 12:49, disse:

tmferreira e shumi, estão de parabéns, aula muito boa. Que venha a próxima!

Valeu, mas os créditos são totalmente do tmferreira!!
VALEU A TODOS!!!
0

#5 Membro offline   tmferreira Ícone

  • Ícone
  • Grupo: Membro Amigo
  • Posts: 174
  • Cadastrado: 23-agosto 06
  • Localização:Campos dos Goytacazes - RJ
  • Interesses:Tudo relacionado à tecnologia. Adoro aprender!!!!

Postou 05 fevereiro 2007 - 12:01

Obrigado pela força, Thiago!

Vamos às correções:

2. Não é para receber os números pelo usuário. Tem que ser automático.

3. Não é um erro, mas a média deveria ser calculada somente no final do PARA. Da forma que está, dá certo, mas o cálculo será executado 50 vezes. Se colocá-lo fora da estrutura, será executado somente 1 vez, aumentando a performance do seu algoritmo.

4 (desafio). O loop da entrada dos dados nunca acabará, pois não há incremento em x.
.:. Thiago Ferreira .:.
0

#6 Membro offline   Thiago Rodrigues Ícone

  • Ícone
  • Grupo: Membros
  • Posts: 48
  • Cadastrado: 22-dezembro 06
  • Interesses:Html + css + pradrões web + Php + Javascript + Ajax + Monetização

Postou 05 fevereiro 2007 - 12:24

Ver posttmferreira, em 05/02/2007 - 12:01, disse:

2. Não é para receber os números pelo usuário. Tem que ser automático.

Corrigido:
INICIO
	numeros : array[0..19] de inteiro;
	num: inteiro;
	PARA x DE 0 ATÉ 19 PASSO 1 FAÇA
		ESCREVA ("Digite um número");
		LEIA(num);
		SE num mod 2 = 0 ENTAO
			numeros[x] := num;
	FIM PARA
FIM


Ver posttmferreira, em 05/02/2007 - 12:01, disse:

3. Não é um erro, mas a média deveria ser calculada somente no final do PARA. Da forma que está, dá certo, mas o cálculo será executado 50 vezes. Se colocá-lo fora da estrutura, será executado somente 1 vez, aumentando a performance do seu algoritmo.


Corrigido:
INICIO
	vetor_idade : array(0..49) de inteiro;
	x, total_idade, media : inteiro;
	PARA x DE 0 ATÉ 50 PASSO 1 FAÇA
		ESCREVA ("Digite sua idade");
		LEIA(idade);
		vetor_idade[x] := idade;
	FIM PARA
	PARA x DE 0 ATÉ 50 PASSO 1 FAÇA
		total_idade := (total_idade + vetor_idade[x]);
	FIM PARA
	 media := (total_idade / 50);
	ESCREVA ("A média de idade dos entrevistados é", media);


Ver posttmferreira, em 05/02/2007 - 12:01, disse:

4 (desafio). O loop da entrada dos dados nunca acabará, pois não há incremento em x.

Esse eu estou com dúvida, como incrimentar a estrutura REPITA?

Seria:
REPITA PASSO 1

ou
ATÉ (vetor_idade[50] > 0) PASSO 1


Essa eu não faço idéia.
Abraço
Conheça já:
NerdGames - Tecnologia com uma pitada de diversão
www.nerdgames.net/blog
0

#7 Membro offline   dupa31 Ícone

  • Ícone
  • Grupo: Membros
  • Posts: 65
  • Cadastrado: 03-dezembro 06

Postou 05 fevereiro 2007 - 12:29

Quais são os dois tipos de arranjos?


Resposta: Arranjo unidimensional também é conhecido por vetor.
Arranjo bidimensional
Eduardo Virginio - Desenvolvedor Web
http://www.tag-designer.com
Desenvolvimento e Hospedagem
0

#8 Membro offline   tmferreira Ícone

  • Ícone
  • Grupo: Membro Amigo
  • Posts: 174
  • Cadastrado: 23-agosto 06
  • Localização:Campos dos Goytacazes - RJ
  • Interesses:Tudo relacionado à tecnologia. Adoro aprender!!!!

Postou 05 fevereiro 2007 - 12:40

Thiago Rodrigues,

Acho que não entendeu a correção da questão 2. Não é para pedir ao usuário que digite o número. O número deve ser gravado no vetor automaticamente sem intervenção do usuário.

Quanto ao desafio, você está usando o REPITA quando deveria estar usando outra estrutura. Repare na questão 3.
.:. Thiago Ferreira .:.
0

#9 Membro offline   dupa31 Ícone

  • Ícone
  • Grupo: Membros
  • Posts: 65
  • Cadastrado: 03-dezembro 06

Postou 05 fevereiro 2007 - 12:42

INICIO
numeros : array[0..19] de inteiro;
numero: inteiro;
PARA x DE 0 ATÉ 19 PASSO 1 FAÇA
LEIA (numero);
SE numero mod 2 = 0 ENTÃO
numeros[x] := numero;
FIM PARA
FIM
Eduardo Virginio - Desenvolvedor Web
http://www.tag-designer.com
Desenvolvimento e Hospedagem
0

#10 Membro offline   Thiago Rodrigues Ícone

  • Ícone
  • Grupo: Membros
  • Posts: 48
  • Cadastrado: 22-dezembro 06
  • Interesses:Html + css + pradrões web + Php + Javascript + Ajax + Monetização

Postou 05 fevereiro 2007 - 12:55

Ver posttmferreira, em 05/02/2007 - 12:40, disse:

Quanto ao desafio, você está usando o REPITA quando deveria estar usando outra estrutura. Repare na questão 3.

EU não utilizei a outra estrutura por um motivo, pense comigo:
Se ao inserir os dados o usuário digitar um dado "falso" ele não será inserido.
E eu quero que o programa pegue "x" quantidade de dados, independentemente de quantas pessoas tentarão.
Com a outra estrutura eu poderia pedir por exemplo para 50 pessoas digitarem a idade, mas se uma delas digitar errado (menor que zero por exemplo) ele não será adicionado ao vetor.
Como eu faria se o SE resulta-se em falo, para a pessoa re-digitar a idade?

Ah, e o segundo eu mudei a estrutura e esqueci de mudar o que estava dentro dela, hehe, mals.
INICIO
	numeros : array[0..19] de inteiro;
	num: inteiro;
	PARA x DE 0 ATÉ 19 PASSO 1 FAÇA
		num := x;
		SE num mod 2 = 0 ENTAO
			numeros[x] := num;
	FIM PARA
FIM


Ver posttmferreira, em 05/02/2007 - 12:40, disse:

Quanto ao desafio, você está usando o REPITA quando deveria estar usando outra estrutura. Repare na questão 3.

EU não utilizei a outra estrutura por um motivo, pense comigo:
Se ao inserir os dados o usuário digitar um dado "falso" ele não será inserido.
E eu quero que o programa pegue "x" quantidade de dados, independentemente de quantas pessoas tentarão.
Com a outra estrutura eu poderia pedir por exemplo para 50 pessoas digitarem a idade, mas se uma delas digitar errado (menor que zero por exemplo) ele não será adicionado ao vetor.
Como eu faria se o SE resulta-se em falo, para a pessoa re-digitar a idade?

Ah, e o segundo eu mudei a estrutura e esqueci de mudar o que estava dentro dela, hehe, mals.
INICIO
	numeros : array[0..19] de inteiro;
	num: inteiro;
	PARA x DE 0 ATÉ 19 PASSO 1 FAÇA
		num := x;
		SE num mod 2 = 0 ENTAO
			numeros[x] := num;			  
	FIM PARA
FIM

mas ai tem um problema, ele não escreverá 20 números pares no vetor, pois de 0 a 20 não tem 20 pares. Estou pensando em algo, mas até agora nada. Para quebrar o galho vai o alogaritimo abaixo:
INICIO
	 numeros : array[0..19] de inteiro;
	 num: inteiro;
	 PARA x DE 0 ATÉ 100 PASSO 1 FAÇA
		 num := x;
		 SE num mod 2 = 0 ENTAO
			 numeros[x] := num;			  
	 FIM PARA
 FIM

Conheça já:
NerdGames - Tecnologia com uma pitada de diversão
www.nerdgames.net/blog
0

#11 Membro offline   tmferreira Ícone

  • Ícone
  • Grupo: Membro Amigo
  • Posts: 174
  • Cadastrado: 23-agosto 06
  • Localização:Campos dos Goytacazes - RJ
  • Interesses:Tudo relacionado à tecnologia. Adoro aprender!!!!

Postou 05 fevereiro 2007 - 12:55

Thiago Rodrigues,

A questão dois continua errada. Como ficaria o resultado da execução?
numeros = | 0 |   | 2 |   | 4 |....

Como outro algoritmo postado, você resolve através de uma coisa chamada gambiarra. :P

Sobre o desafio: se eu responder, pra quê desafio?? :P
.:. Thiago Ferreira .:.
0

#12 Membro offline   Thiago Rodrigues Ícone

  • Ícone
  • Grupo: Membros
  • Posts: 48
  • Cadastrado: 22-dezembro 06
  • Interesses:Html + css + pradrões web + Php + Javascript + Ajax + Monetização

Postou 05 fevereiro 2007 - 01:04

Ver posttmferreira, em 05/02/2007 - 12:55, disse:

Como outro algoritmo postado, você resolve através de uma coisa chamada gambiarra. :P

POG = Programação Orientadaa Gambiarras
hehehe

A respeito do desafio eu já tenho uma idéia, mas como estou indo trabalhar, farei anoite.
Conheça já:
NerdGames - Tecnologia com uma pitada de diversão
www.nerdgames.net/blog
0

#13 Membro offline   tmferreira Ícone

  • Ícone
  • Grupo: Membro Amigo
  • Posts: 174
  • Cadastrado: 23-agosto 06
  • Localização:Campos dos Goytacazes - RJ
  • Interesses:Tudo relacionado à tecnologia. Adoro aprender!!!!

Postou 05 fevereiro 2007 - 01:30

dupa31, a resposta da primeira questão está incompleta e a para a segunda questão eu faço as mesmas observações que já fiz ao Thiago Rodrigues.
.:. Thiago Ferreira .:.
0

#14 Membro offline   Thiago Rodrigues Ícone

  • Ícone
  • Grupo: Membros
  • Posts: 48
  • Cadastrado: 22-dezembro 06
  • Interesses:Html + css + pradrões web + Php + Javascript + Ajax + Monetização

Postou 09 fevereiro 2007 - 12:31

Ufa, depois de tanto pensar, econtrei uma maneira de fazer o desafio, ehhehe. Era mais fácil do que imaginei.

INICIO
	vetor_idade : array(0..49) de inteiro;
	x, y, total_idade, media : inteiro;
	PARA x DE 0 ATÉ 50 PASSO 1 FAÇA
	   ESCREVA ("Digite sua idade");
		 LEIA(idade);
			SE (IDADE = > 0) ENTAO
				vetor_idade[x] := idade;
			SENAO
				ESCREVA ("Esta idade não foi aceita, por favor digite um número maior ou igual a 0");
				x = x - 1;
			FIM SE
	FIM PARA
	PARA y DE 0 ATÉ 50 PASSO 1 FAÇA
		total_idade := (total_idade + vetor_idade[x]);
	FIM PARA
	 media := (total_idade / 50);
	ESCREVA ("A média de idade dos entrevistados é", media);


Como podem ver, coloquei um "SE" no meio do primeiro loop, desta forma, se a idade for igual ou maior que zero ele grava no vetor, senão ele imprime a mensagem que o valor não foi aceito, e remove 1 da váriavel x (desta forma se o cara errar 5 vezes, as mesmas não serão contadas).

E ai professor, ta certo?!
Abraço!
Conheça já:
NerdGames - Tecnologia com uma pitada de diversão
www.nerdgames.net/blog
0

#15 Membro offline   tmferreira Ícone

  • Ícone
  • Grupo: Membro Amigo
  • Posts: 174
  • Cadastrado: 23-agosto 06
  • Localização:Campos dos Goytacazes - RJ
  • Interesses:Tudo relacionado à tecnologia. Adoro aprender!!!!

Postou 09 fevereiro 2007 - 01:15

A sua resposta é aceitável, Thiago Rodrigues, mas na verdade dava para ser melhor.

Vamos esperar se alguém mais se entusiasma. Se não, na segunda-feira eu posto.
.:. Thiago Ferreira .:.
0

  • (2 Páginas)
  • +
  • 1
  • 2


Resposta rápida

  

1 usuário(s) está(ão) lendo este tópico
0 membro(s), 1 visitante(s) e 0 membros anônimo(s)