Ir ao conteúdo
  • Cadastre-se

Pascal/Delphi Odeio pascal eu so me ferro !


Posts recomendados

program pzim;
var
nome,salario,vendas,comissao,salariofinal:real;
begin
writeln('--------- Sistema de Vendas ---------');
writeln('Digite o nome do vendedor');
readln (nome);
writeln('Digite o salario');
readln (salario);
writeln('Digite o salariofinal');
readln (vendas,comissao <- 0.15*vendas);
readln (comissao <- 0.15*vendas);
readln (salariofinal <- salario+comissao);
clrscr;
writeln ('--------- Resultado ---------');
writeln ('--> Nome:', nome);
writeln ('--> Salario:', salario);
writeln ('--> Salario Final (salario+comissao):', salario);
End.

 

Cara, esse trabalho era só pra eu fazer um programa que ia ler e calcular quanto o vendedor ia ganhar por mês!, mas não esta dando nd certo! '-'

 

image.png.7453c8df60a41b4366f8d628d0e44569.png

  • Haha 1
Link para o comentário
Compartilhar em outros sites

@Bleick  o problema é apenas na sintaxe e na forma das variáveis receberem novos valores, observe:
 

2 horas atrás, Bleick disse:

readln (vendas,comissao <- 0.15*vendas);

 

 

você chamou a procedure readln e informou dois parâmetros:

1: vendas

2: comissao <- 0.15*vendas

 

o problema é no segundo parâmetro, o símbolo <- é desconhecido no pascal, além disso, a variável vendas ainda nem recebeu o valor para realizar a operação.

 

acredito que o que você deseja é isso:

 

readln (vendas);  // provável que um novo valor foi atribuído a vendas, mas isso é outra história...
comissao :=  0.15 * vendas; 
// um novo valor foi atribuído á variável comissão
writeln("comissão: ", comissao);

 

para alterar uma variável use a simobologia :=

 

 

 

talvez, estás se perguntando como uma procedure alterou uma variável, isso é permitido se você declarar var nas procedures:

 

program Project1;

procedure procedimento_1(var s:string);
begin
Writeln('começando o procedimento 1');
 s := 'a variável s está "linkada" à variável resultado';
end;

procedure procedimento_2(s:string);
begin
Writeln('começando o procedimento 2');
  s := 'a variável é temporária';
end;

function procedimento_3(s:string):String;
begin
Writeln('começando o procedimento 3');
result := s;
end;

var
 resultado : string;
Begin
writeln('primeira linha do código a ser executada');

resultado := '';
procedimento_1(resultado);
writeln('valor do procdimento 1:',resultado);

resultado := 'NÃO RETORNA VALOR';
procedimento_2(resultado);
writeln('valor do procdimento 2:',resultado);

resultado := procedimento_3('use := para passar um novo valor a variável');
writeln('valor do procdimento 3:',resultado);


Readln;
end.

 

 

 

 

 

 

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

@Fazzioni, não tente fazer todo programa de uma vez. Vá fazendo por pequenas partes. Vá testando cada coisa nova que inserir no código.

 

Exemplo:

image.png

 

 

Então, aqui nem tá lendo o nome do vendedor... ou seja: se não conseguiria ler os dados do vendedor, como conseguiria fazer qualquer outra coisa?

 

O problema está aqui:

18 horas atrás, Bleick disse:

var
  nome, salario, vendas, comissao, salariofinal: real;

 

 

O nome da pessoa não é um número, mas sim um texto, logo estaria incorreto definir a variável correspondente como real, faz mais sentido utilizar string

 

Poderia ser algo assim:

var
  nome: string;
  salario, vendas, comissao, salarioFinal: real;

 

Agora já não deu mais erro:

image.png

 

Mas como saber se leu corretamente? Uma forma seria imprimindo a variável na tela. Exemplo:

image.png

 

Pronto, parece que tá funcionando... por aí vai...

 

Tentando agora calcular o valor da comissão:

 

program Pzim;
var
  nome: string;
  salario, vendas, comissao, salarioFinal: real;
begin
writeln('--------- Sistema de Vendas ---------');
writeln('Digite o nome do vendedor');
readln(nome);
writeln('Digite o salario');
readln(salario);
writeln('Digite o tatal de vendas');
readln(vendas);

comissao := vendas*0.15;

									
									
									
									
									
//exibindo na tela apenas para testes. Ver se está lendo/calculando corretamente...
//isso não vai para versão final do código
writeln;
writeln('Nome do vendedor: ', nome);
writeln('Salário         : ', salario);
writeln('Comissão        : ', comissao);                                      
end.

 

Está dando certo? Veja se está dando o valor correto.. se não tiver, corrija, se tiver correto, dê continuidade.

 

O código SEMPRE deve está compilável... se estiver com algum erro de compilação, vá lá e corrija. Após está compilando, veja se está funcionando corretamente (compilar corretamente é diferente de está funcionando corretamente)... se está lendo os valores corretamente, se está efetuando os cálculos certos.. vá testando tudo... mas EVITE ficar fazendo muito coisa de uma vez só...

 

 

 

Sugiro que pegue esse último código acima e teste. Se estiver tudo OK, adicione mais uma coisa, por exemplo, o cálculo do salário final. Analise a estrutura atual... (você já deve ter percebido que NÃO se faz uma conta dentro do readln(), por exemplo). Vai implementando e testando... vá fazendo por etapas.

 

RESUMINDO:

  • poste o enunciado completo da questão;
  • vá implementando até onde conseguir e poste o código atual e onde está com dúvidas.

Só NÃO tente fazer muita coisa ao mesmo tempo... faz um coisa e testa, faz uma coisa e testa, faz uma coisa e testa...... não se assuste com o "retrabalho", a medida que vai ganhando experiência, vai precisar cada vez menos efetuar esses testes simples, mas por enquanto vá testando tudo mesmo.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

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...