Jump to content


Photo

Ajuda: Portugol


  • Faça o login para participar
6 replies to this topic

#1 tarlix

tarlix

    Novato no fórum

  • Usuários
  • 4 posts
  • Sexo:Não informado

Posted 16/09/2009, 21:31

Boa noite:

gostaria de pedir uma ajuda no seguinte problema:

receba quatro notas de um aluno, calcule e mostre a media aritmetica. mostre a mensagem de acordo com a tabela abaixo:
media msg:
0,0 |--3,0 reprovado
3,0 |--7,0 exame
7,0 |--|10 aprovado

caso o aluno fique de exame, receba a nota da prova e dê a seguinte mensagem:

exame <5 reprovado
exame>=5 aprovado
__________________________________________________

eh o seguinte vo tentar ser o mais claro possivel, eu fiz o fluxograma e chegou uma parte que para do lado falso eu criei outro if (se) e para o lado também criei outro if (se) e não sei como fazer isso em portugol, se alguem puder me ajudar obrigado.

vo postar o codigo até onde eu fiz:

[codebox]Programa Notas
variaveis n1,n2, n3,n4, media, exame, M_exame:real;
Inicio
Imprima "Entre com suas 4 notas";
Ler n1,n2,n3,n4;
media = (n1,n2,n3,n4)/4;
Se media >=7 e media <=10
entao
Imprima "aprovado";
senão
Se media >=3 e media <7
entao
imprima "entre com sua nota no exame";
/* detalhe, essa é a parte que terá "se" tanto para quando for pro lado verdadeiro,
como qdo for pro lado falso */
ler exame;
M_exame=(media+exame)/2;
Se M_exame<5
entao
imprima "reprovado";
senao
se M_exame>=5;
entao
Imprima "aprovado";

[/codebox]
foi aki que eu parei, porém, faltou a parte
"media >=0 e media <3 então
imprima "reprovado";

o uncio problema eh que não sei como eu faço pra voltar para essa parte logico caso o resto do codigo esteja correto

vlws se alguem puder me ajudar

obrigado.

Edição feita por: tarlix, 16/09/2009, 21:34.


#2 cabeca_441

cabeca_441

    Blues Man...

  • Usuários
  • 650 posts
  • Sexo:Masculino
  • Localidade:São Caetano do SulSP

Posted 17/09/2009, 08:01

Se media >=7 e media <=10

	 Imprima "aprovado";

Se então media >=3 e media <7

	 Imprima "entre com sua nota no exame";

	 ler exame;
	 M_exame=(media+exame)/2;

	 Se M_exame<5

		  imprima "reprovado";

	 Se não

		  Imprima "aprovado";

Se não

	 imprima "reprovado"

vc vai usar um if, else if e um else.... ;)
__________Gov't Mule

#3 tarlix

tarlix

    Novato no fórum

  • Usuários
  • 4 posts
  • Sexo:Não informado

Posted 17/09/2009, 14:18

então mesmo com o codigo que vc posto eu ainda não entendi...
tipo:

o meu problema eh depois que o fluxograma foi pro lado verdadeiro (ou seja o aluno ficou com media >=3 e media <7 e foi pra exame) eu tive que criar outro "se" ai eu fiz esse lado se porém ainda faltou o "media >=0 e media <3 então
imprima "reprovado";

se vc puder ser um pouco mais claro pq eu não consegui entender ;/

#4 cabeca_441

cabeca_441

    Blues Man...

  • Usuários
  • 650 posts
  • Sexo:Masculino
  • Localidade:São Caetano do SulSP

Posted 17/09/2009, 15:14

opa agora entendi oq vc quis dizer...hehe

entao exatamente por isso que tem essa parte do codigo...

Se então media >=3 e media <7

	 Imprima "entre com sua nota no exame";

	 ler exame;
	 M_exame=(media+exame)/2;

	 Se M_exame<5

		  imprima "reprovado";

	 Se não

		  Imprima "aprovado";

Se não

	 imprima "reprovado";

ele entra no exame... se a media dele for menor que 5 entao ele 'e reprovado... se nao ( se nao for menor que 5 sera igual ou maior =) ) ele sera aprovado...

esse "Se nao" 'e o else.. o else so 'e aplicado se as condicoes acima nao forem verdadeiras. portanto se ele for pra exame e a nota for maior que 5 ele sera aprovado... ou se a nota dele for menor que 3 ele sera reprovado automaticamente


esta programando em alguma linguagem ou nao? as vezes 'e mais facil de entender.... eu acho bem mais facil... hehe

Edição feita por: cabeca_441, 17/09/2009, 15:31.

__________Gov't Mule

#5 tarlix

tarlix

    Novato no fórum

  • Usuários
  • 4 posts
  • Sexo:Não informado

Posted 17/09/2009, 19:13

na faculdade estamos aprendendo a programar em C#

eu vo desenhar aki o fluxograma e vo tenta explicar onde to ficando perdido
Posted Image

é o seguinte:
nessa no codigo eu terei feito a parte:
Se media >=7 e media <=10
entao
Imprima "aprovado";
senão

feito isso eu vou para o segundo que será:
Se media >=3 e media <7
entao
...

de acordo com o fluxograma, ele irá para o lado "V" ai eu farei a parte :
imprima "entre com sua nota no exame";
 ler exame;
M_exame=(media+exame)/2;
Se M_exame<5
entao
imprima "reprovado";
senao
se M_exame>=5;
entao
Imprima "aprovado";

feito isso eu teria que voltar pro "senão" que levaria para o quadro vermelho "1" mas desta vez eu iria pro lado "F" que levaria para a parte "0<=media<3"

então, minha duvida eh a seguinte, vendo isso no portugol, como eu faria para voltar do final do lado vermelho "2" para o lado vermelho "1" e começaria a fazer o lado "F".

eu não sei se esta certo mas se eu fexar os 2 ultimos "SE" que eu abri funcionaria?

tipw:
ali no quadrado "vermelho 2" eu abri 2x o "se" entaum se depois que eu terminar aquele lado e eu fizer "fim se; fim se; senão" ele voltaria pro lado "F" do "3<=3media<7"?




eu fui mais claro desta vez?

vlw :D

Edição feita por: tarlix, 17/09/2009, 19:17.


#6 cabeca_441

cabeca_441

    Blues Man...

  • Usuários
  • 650 posts
  • Sexo:Masculino
  • Localidade:São Caetano do SulSP

Posted 17/09/2009, 23:53

ta meio confuso isso..rsrsr

então, minha duvida eh a seguinte, vendo isso no portugol, como eu faria para voltar do final do lado vermelho "2" para o lado vermelho "1" e começaria a fazer o lado "F".


vc nao voltaria... digamos que o If é um caminho sem volta.rsrs

Se media >=7 e media <=10
entao
Imprima "aprovado";

ok ate aqui esta certo

se nao
Se media >=3 e media <7

tb esta ok, agora vc tem um if novamente

ou voce vai para o caminho 1 ou para o caminho 2... apartir do momento que vc escolheu um caminho vc nao pode mais voltar.

* caminho 1, media menor que 3

Se media <3
entao
Imprima "reprovado";

(acabou o programa, caso tenha escolhido o 1 !)

* caminho 2, media igual ou maior a 3 e menor que 7

imprima "entre com sua nota no exame";
ler exame;
M_exame=(media+exame)/2;
Se M_exame<5
entao
imprima "reprovado";
senao
se M_exame>=5;
entao
Imprima "aprovado";
(acabou o programa, caso tenha escolhido o 2 !)



agora entendeu??hehe
__________Gov't Mule

#7 tarlix

tarlix

    Novato no fórum

  • Usuários
  • 4 posts
  • Sexo:Não informado

Posted 18/09/2009, 10:05

puts, que mer*a hein :S

entendi sim, vlws , vo tentar fazer de outro jeito :D

vlw ae =)

depois que eu fizer do outro jeito eu posto aki

vlws dnovo




pronto: vo postar o codigo do jeito que eu fiz:

Programa nota
variaveis n1,n2,n3,n4,media,exame,M_media:real;
Inicio
imprima "entr com suas 4 notas";
ler n1,n2,n3,n4;
media=(n1,n2,n3,n4)/4;
se media >=7 e media <=10;
entao
imprima "aprovado";
senão

// aki que eu mudei, ao invez de fazer se media >3 e media <7 eu fiz o outro primeiro 

Se media >=0 e media <3; 
então
imprima "reprovado";
senao
se media >3 e media <7;
entao
imprima "digite sua nota no exame";
ler exame;
M_exame=(media+exame)/2;
se M_exame<5;
entao
imprima "reprovado";
senao
imprima "aprovado";
fim se;
fim se;
fim se;
fim se;
FIM


bom é isso ai vlw pela ajuda... acredito que o meu eu tenho feito isso virar um problema maior pq eu naum sabia se eu abrisse um "SE" pra verdadeiro depois eu conseguiria voltar pro lado falso e abrir outro "SE"
ai eu inverti a sequencia ao invez de do Se media >=7 e media <=10 eu ir pro se media >3 e media <7 e fazer akela sequencia, eu fiz Se media >=7 e media <=10 e fui para se media >=0 e media <3 e deixei se media >3 e media <7 por ultimo.

flws, acho que dessa vez consegui :D

Edição feita por: tarlix, 18/09/2009, 11:35.





1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq