Ir ao conteúdo
  • Cadastre-se

Programa Loja em Pascal - Me ajudem, pf.


Posts recomendados

Trabalho Disciplina de Algoritmo Civil.docxOi pessoal, tudo bem?

Eu preciso fazer um programa para entregar amanhã pro meu professor. Tentei até agora mas não consegui. Se alguém pudesse me ajudar... Não estou pedindo para fazer o trabalho pra mim, mas para me ajudar a entender.

Vou anexar o arquivo que meu prof. deu para o trabalho e vou colocar o que eu fiz até agora... Sei que está errado, mas é o que consegui fazer.

vocês vão ver que fiz até o segundo menu, porque estava tentando fazer a repetição de voltar de um para outro, mas sei que tem mais coisa faltando.

Se alguém puder me ajudar a entender.

Fico grata a quem puder me ajudar ^_^  .

Program TRABALHO ;VAROPCAO,TOTAL,QT,AREIA,CIMENTO,CAL,PEDRA,TC,TB,T1,T2,T3,T4,C1,C2,F1,F2,CE4,CE2,I1,I2,RP,PP,AI,AE,CA,CS:REAL;RESP:STRING;BeginWRITELN('                    ****************************************');WRITELN('                    * LOJA DE MATERIAL DE CONSTRUÇÃO *');WRITELN('                    ****************************************');    WRITELN('                                                            ');WRITELN('   DESEJA INICIAR UM ORÇAMENTO? SE SIM DIGITE S. SE NÃO DIGITE N PARA SAIR:');READLN(RESP);  while resp= 'n' do exit;if RESP= 'S' thenBEGIN     WRITELN('DIGITE A OPÇÃO DESEJADA', opcao);  WRITELN('1 - MATERIAS BÁSICOS');    WRITELN('* AREIA                                  R$80,00 M3', areia);    WRITELN('* CIMENTO                                R$30,00 SACO 50KG', cimento);       WRITELN('* PEDRA                                  R$90,00 M3', pedra);    WRITELN('* CAL                                    R$15,00 SACO 5KG', cal);        WRITELN('* TC-TIJOLO COMUM                        R$500,00 MILHEIRO', tc);        WRITELN('* TB-TIJOLO BAIANO                       R$390,00 MILHEIRO', tb);          while OPCAO = AREIA do        TOTAL:= AREIA + QT*80;      while OPCAO = CIMENTO do  TOTAL:= CIMENTO + QT*30;    while OPCAO = PEDRA do      TOTAL:= PEDRA + QT*90;    while OPCAO = CAL do      TOTAL:= CAL + QT*15;    while OPCAO = TC do      TOTAL:= TC + QT*500;     while OPCAO = TB do      TOTAL:= TB + QT*390;      end  else       WRITELN('DESEJA OUTRO MATERIAL OPÇÃO ANTERIOR? SE SIM S OU P PROXIMO');    READLN(RESP);                   if RESP= 'P' then BEGINWRITELN('2 - HIDRÁULICA');     WRITELN('* T1 TUBO PVC BARRA 6MTS MARROM 3/4      R$22,00 BARRA');    WRITELN('* T2 TUBO PVC BARRA 6MTS MARROM 50mm     R$50,00 BARRA');    WRITELN('* T3 TUBO PVC BARRA 3MTS AQUATERM        R$30,00 BARRA');    WRITELN('* T4 TUBO PVC BARRA 6MTS BRANCO ESGOTO   R$40,00 BARRA');    WRITELN('* C1 CURVA PVC 45G 50mm                  R$10,00 UN.');    WRITELN('* C2 COTOVELO você 25mm                    R$10,00 UN.');          IF OPCAO = T1 THEN         TOTAL:= T1+ QT*22;         IF OPCAO = T2 THEN         TOTAL:= T2 + QT*50;         IF OPCAO = T3 THEN         TOTAL:= T3 + QT*30;         IF OPCAO = T4 THEN         TOTAL:= T4 + QT*40;         IF OPCAO = C1 THEN         TOTAL:= C1 + QT*10;         IF OPCAO = C2 THEN         TOTAL:= C2 + QT*10;   end   End.
Link para o comentário
Compartilhar em outros sites

  • mês depois...

Sei que este trabalho ja faz um bom tempo que ja foi entregue... mas.
Como estou sem nada para fazer estou dando uma olhada em seu codigo...

(linha 20)Uma boa seria voce mudar -> if (RESP= 'S') then para if (RESP= 'S') or (RESP='s') then
da mais opções para o usuario.

 

(linha 28 a 40) Seria legal voce quanta casas decimais voce quer ex areia:20:2.

(linha 43) falta colocar o readln(OPCAO);

(as contas) voce colocou as variaveis com letras diferentes e tambem indicar que é uma string

Ex (OPCAO='areia')

E outra coisa voce esqueceu-se de colocar como vai entrar o valor para se fazer a conta TOTAL.

 

E na quela parte de "WRITELN('DESEJA OUTRO MATERIAL OPÇÃO ANTERIOR? SE SIM S OU P PROXIMO');

    READLN(RESP);"
voce nao pode dizer que isso é else, se nao ele pula esta parte.

(linha 95) acrescente Writeln('Sua conta final do orçamento é:',TOTAL,' reais');

                                   Writekn('Muito obrigado por fazer orçamento com nossa loja');

                                   readln;
Para ficar bonito no final
 
Espero que tenha dado certo seu projeto
e tenha tirado a nota maxima
Abaços!
Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Olá. Sudder Natsu (ou qualquer outro)... Quer tentar corrigir o programa e postar aqui para ir tentando corrigir/melhorando?

 

 

 

Então, já aproveitando o que já foi postado... Vou tentar complementar a sua resposta. Pode ser que você já conheça ou não algumas coisas, mas de qualquer sorte alimenta a postagem :D

 

Em:

 

(linha 20)Uma boa seria voce mudar -> if (RESP= 'S') then para if (RESP= 'S') or (RESP='s') then
da mais opções para o usuario.

 

Existe uma outra boa solução para essa questão da "distinção entre maiúsculo e minúsculo"¹, que seria usar um "UpCase()"². Ex.:

readln(RESP);RESP:=UpCase(RESP);

Daí nos ifs da vida, bastaria testar apenas com o maiúsculo.

if (RESP='S') then  begin  end;

ou poderia também colocar no ifs diretamente, ex:

if (UpCase(RESP)='S') then  begin  end;

Para esse contexto eu prefiro colocar logo após a leitura, pois se a variável for utilizada em outro momento (sem ser alterada, é claro), não precisaria usar um UpCase() novamente onde for testar...

1 alguns chamam de "sensível ao caso", ou seja, que diferente um do outro. No Pascal,  por exemplo as variáveis, NÃO SÃO sensíveis ao caso, daí tanto faz usar "RESP" como Resp ou "REsp" etc que o "programa" vai entender. Em outras linguagem como Java, isso não ocorre.

2 Function que pertence à unit CRT ou WinCRT (em alguns casos precisa carregar a biblioteca lá no início do programa). Tem a finalidade de retornar o valor correspondente em maiúsculo do caractere.

 

 

***

Em:

 

(linha 28 a 40) Seria legal voce quanta casas decimais voce quer ex areia:20:2.

De um certo modo, ao "estipular uma formatação de dados" para serem exibidos, poderiam-se utilizar apenas um "0" na primeira parte, ex.:

writeln('Sua conta final do orçamento é: ',TOTAL:0:2,' reais');

Ou seja, ao utilizar um "variavel_do_tipo_real:X:Y", esse X="casas reservadas a esquerda da vírgula (ou mais ou menos isso)" e Y="números de casas decimais". Ao utilizar um valor para o "X", o texto acabará sendo deslocado para direita, ficando um espaço entre o texto a esquerda e a variável.... uma boa utilização de um valor (relativamente alto) seria para "alinhar o texto a direita, ou seja, se vários valores forem impressos a partir da mesmo posição, a parte da direita (no caso a decimal) ficarão (tendem a ficar) alinhados...

 

 

***

 

 

Por ai vai....

 

 

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