Ir ao conteúdo
  • Cadastre-se

Duvida em exercicio de Pascal


Posts recomendados

Boa noite pessoal,
 
Fiz um exercicio mas fiquei pensando se não existe uma outra forma de fazer, ainda mais que a utilização do comando "break" não foi muito bem explicado
 
Enunciado:
¡Faça um programa em Pascal que possua um vetor com 3 nomes armazenados:
  nomes[1] := ‘Jose’;
  nomes[2] := ‘Maria’;
  nomes[3] := ‘Carlos’;
  O programa deverá solicitar a digitação de um nome qualquer, e buscará o nome digitado no vetor de nomes. Caso encontre o nome, escreverá ‘Achei!’; Caso contrário, escreverá ‘Não achei’;
 
Minha Solução:

Program Exerc_4_slide ;var vet : array [1..3] of string;i	: integer;nome , R: string;	Beginfor i := 1 to 3 do	begin	  write( 'Digite o ', i , 'o. nome: ' ) ;	  read( vet[i] ) ;  	end;				write( 'Digite o nome que voce quer procurar: ' ) ; 			read( nome ) ; 						for i := 1 to 3 do	begin	  if ( nome = vet[i] ) then         	begin		     R := 'Achei!!!';		     break;	        end		    else		     R := 'Não achei!!!';	end;	write( R ) ; End.
Link para o comentário
Compartilhar em outros sites

Olá,

 

Sim, sempre há outras formas de resolver, poderia ter usado outros tipos de loop por exemplo...

 

Quanto ao break, este serve para terminar a execução do loop e assim pula para as instruções seguintes.

 

No momento não tenho tempo de acrescentar mais nada, espero ter ajudado.

 

Boa Sorte e Sucesso!

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Olá. Vamos lá.
 
 
Alguns pontos que achei importante:
 
1) mantenha seu código sempre bem identado. Para facilitar, evite usar "TAB" (tabulação);
2) de fato, usar o break não é uma boa prática. Para esse contexto, utilize o Repeat ou While (no lugar do For) . Recomendo o Repeat!
3) use sempre apenas readln, nunca* read. Por enquanto não precisa entender a diferença entre um e outro.
 
Abaixo identei o seu código (no meu padrão). Veja a diferença visual... obs.: identação também pode ser critério de avaliação.

Program Exerc_4_slide;var  vet  :array [1..3] of string;  i    :integer;  R,  nome :string;  beginfor i := 1 to 3 do  begin  write('Digite o ',i,'o. nome: ');  readln(vet[i]);  end;  		write('Digite o nome que voce quer procurar: ');readln(nome); 			for i := 1 to 3 do  begin  if (nome = vet[i]) then    begin    R:='Achei!!!';    break;    end  else    R:='Não achei!!!';  end;write(R);end.

No aguardo.

Link para o comentário
Compartilhar em outros sites

Obrigado pessoal pela ajuda,

 

Vou tentar fazer com o repeat.

 

@Simon Viegas

 

Eu não soube fazer a identação para postar no forum, mas eu procuro sempre deixar o mais identado possivel.

Eu so deixo mesmo o begin e o end; mais para esquerda e o que vai no bloco mais a direita...


Olá. Vamos lá.
 
 
Alguns pontos que achei importante:
 
1) mantenha seu código sempre bem identado. Para facilitar, evite usar "TAB" (tabulação);
2) de fato, usar o break não é uma boa prática. Para esse contexto, utilize o Repeat ou While (no lugar do For) . Recomendo o Repeat!
3) use sempre apenas readln, nunca* read. Por enquanto não precisa entender a diferença entre um e outro.
 
Abaixo identei o seu código (no meu padrão). Veja a diferença visual... obs.: identação também pode ser critério de avaliação.

Program Exerc_4_slide;var  vet  :array [1..3] of string;  i    :integer;  R,  nome :string;  beginfor i := 1 to 3 do  begin  write('Digite o ',i,'o. nome: ');  readln(vet[i]);  end;  		write('Digite o nome que voce quer procurar: ');readln(nome); 			for i := 1 to 3 do  begin  if (nome = vet[i]) then    begin    R:='Achei!!!';    break;    end  else    R:='Não achei!!!';  end;write(R);end.

No aguardo.

@Simon Viegas

Como seria utilizando o repeat ? pode me ajudar

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Olá.

 

@Fabio Aragao

 

 

Eu não soube fazer a identação para postar no forum, mas eu procuro sempre deixar o mais identado possivel.

Eu so deixo mesmo o begin e o end; mais para esquerda e o que vai no bloco mais a direita...

O mais importante é que o código em si fique identado. Claro que é bom que fique identado no fórum, mas não é foco! Não se preocupe com isso. :D

 

Já aproveitando sobre a questão do alinhamento, abaixo usei um programa que tenho aqui que consigo mostrar as "tabulações" (Tab) e os "espaços". Espaços = "." e Tabulação = ">>"

 

post-409554-0-97114600-1440794735_thumb.

 

Perceba que existem tanto um quanto outro misturados... a minha sugestão é que tente usar apenas um. Ou só tabulação, ou só espaços... Então, a tabulação é meio que um código, e cada "exibidor" tem uma forma de interpretar esse código. Por exemplo, aqui para mim, o Fórum/Navegador está exibindo um espaçamento equivalente a 8 espaços. Já na imagem que postei, está exibindo com espaçamento de 4. Talvez o seu programa use outra quantidade de espaços... etc.  Tanto tabulação, tanto espaço, tem as suas vantagens e desvantagens... como digo, como sugestão tente usar somente um outro outro... ;)  (claro que me referido ao espaçamento da identação... do alinhamento a esquerda...)

 

 

 

 

Como seria utilizando o repeat ? pode me ajudar

 

O Pascal possui basicamente 3 tipos de laços de repetição:

 

1) For

2) Repeat

3) While

 

Na prática, "O QUE DÁ PARA IMPLEMENTAR COM UM, DÁ PARA FAZER COM UM OUTRO", ou seja, bastaria existir um, certo? Só que acontece que cada um deles tem as suas características, que são mais práticas ou simples para executarem determinadas tarefas.. No seu código inicial, ele foi perfeito para leitura dos dados, já que dos 3 é o mais prático para tal feito (quantidade fixas de loop). Já para o caso da "pesquisa", ele caiu nesse "problema" de talvez precisar interromper no meio do caminho... E essa interrupção (uso do break) pode não ser considerado uma boa prática, ou seja, quebrando (fazendo um trocadilho com o break) o princípio do for que é fazer N laços... entende?  (obs.: não sei exatamente dizer se usar o break é válido ou não... eu particularmente não gosto da ideia para esse caso)

 

Em relação a como usar o repeat é simples. Dê uma pesquisada/revisada sobre esses três laços: FOR, REPEAT e WHILE. Tente entender as diferenças antes de tentar fazer. Acho que dá uma resposta pronta não tenha graça... mas para para ajudar....:você precisará de duas (ou mais) condições no until.

 

Tenta ai.

 

Caso não consiga, é só postar onde está com dificuldades que tentamos te ajudar..

 

 

 

UPDATE

 

PS: Só aproveitando, perceba que para "entrar" o nome tem que está escrito exatamente da mesma forma que foi digitado... caso ache interessante, dá para implementar para ele não diferenciar letras maiúsculas e minúsculas (Ex.: "Maria" acharia com "MARIA" ou "MAria" etc) e também verificar se "contém" a palavra (Ex.: Maria acharia em "Maria Joaquina" ou "Joaquina" acharia em "Maria Joaquina" também" etc). Mas caso deseja, deixe para depois... por enquanto o foco é utilizar implementar o laço.

 

No aguardo.

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...