Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
Diogo Dark

Erro de programação

Recommended Posts

Gente quem puder me ajudar agradeço, me digam o erro desta programação, obg

 

--------------------

uses
  SysUtils;

 

Var  Idade:Array[1..10] of integer;
       ID:Real;
       Soma2:integer;
       I:Integer;

 

begin

  For Soma2:= 1 To 10 Do
    Begin
      Writeln('Digite a idade');
      readln(Idade);

      ID:=Idade+Idade;
    end;

  Writeln('A soma das idades e: ',ID :2:2);
  readln;

end.

------------------

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá @Diogo Dark. Seja bem vindo ao Fórum do Clube do Hardware.

 

Primeiramente, peço que edite sua postagem, e poste novamente o seu código, mas lembrando de utilizar a tag CODE (botão <>). Mas sobre aqui:
http://forum.clubedohardware.com.br/topic/1136705-tag-code-como-e-para-que-usar/

 

Feito isso, crie uma nova resposta explicando melhor o que você precisa (enunciado) e o que está dando erro no seu código.

 

No aguardo.

 

 

Editado por Simon Viegas

Compartilhar este post


Link para o post
Compartilhar em outros sites
  • Autor do tópico
  • Desculpe, Minha duvida é o que está errado com este codigo.

     

    uses
      SysUtils;
    
    Var Idade:Array[1..10] of integer;
        ID:Real;
        Soma2:integer;
        I:Integer;
    
    begin
    
      For Soma2:= 1 To 10 Do
        Begin
          Writeln('Digite a idade');
          readln(Idade[I]);
    
          ID:=Idade[I]+Idade[I];
        end;
    
      Writeln('A soma das idades e: ',ID :2:2);
      readln;
    
    end.

     

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Olá @Diogo Dark.

     

    14 horas atrás, Diogo Dark disse:

    Desculpe, Minha duvida é o que está errado com este codigo.

     

    Para sabermos o que está errado, precisamos saber o que você quer fazer... :). Pelas linhas no final, creio que você queria algo como "a soma das idades informadas pelo usuário", correto?

     

    Mas vamos lá, abaixo seu código com alguns comentários;
     

    uses
      SysUtils;
    Var
      Idade:Array[1..10] of integer;  //[1]
      ID   :Real; //[2]
      Soma2:integer;
      I    :Integer;
    begin
    For Soma2:=1 To 10 Do //[3]
      Begin
        Writeln('Digite a idade ',I);
        readln(Idade[I]); //[4]
        writeln(idade[i]);  
        ID:=Idade[I]+Idade[I]; //[5]
      end;
    Writeln('A soma das idades e: ',ID :2:2);
    readln;
    end.
    
    {[1] Está utilizando um array para armazenar as idades. Mas veja que essas idades
     não são utilizadas depois, logo quebrando o "conceito de armazenamento". (se
     não vai usar, não faz sentido armazenar). Pode deixar com array por enquanto!
     Depois analisa com mais calma!!!
     
     [2] Pela últimas linhas, a variável ID é a que vai ficar com o resultado da soma
     da idades, correto? De um modo geral, é aconselhável que as variáveis tenham uma
     nomenclatura que sugere a sua finalidade, ou seja, se ID vai armazenar a soma,
     por quê não usar "Soma" ou "Total" ou "SomaDasIdades" etc?
    
     [3] No "for", você está utilizando uma variável de nomenclatura Soma2. Até ai ok.
     Analisando o conteúdo do "for", verifica que você não está utilizando a variável,
     logo, o Soma2 está servindo apenas para controlar o "for". No item [4] explico 
     melhor.
     
     [4] Nessa linha, você está utilizando a variável I, mas qual o valor dessa 
     variável? As variáveis precisam ser "inicializadas" (ter um valor inicial). Então,
     por padrão, o Pascal já faz isso (mas é um papel do programador), ou seja, as
     variáveis numérias começam com "0". Logo, deve está com o valor "0" naquela
     momento, que por sua vez o array Idade não possui essa posição (pois vai de 1 a
     10). Resumidamente: No lugar de "Soma2", deveria ficar o I. Daí o I iria variar
     de 1 a 10, o que poderá utilizar  para  "percorrer" o array como desejado.
     
     [5] Ai surge o ID (que sugiro que mude essa nomenclatura, como dito em [2]).
     Vamos analisá-lo:
     ID=Idade[I]+Idade[I]. Como "I" sempre está valendo "0", ID=Idade[0]+Idade[0].
     Como dito em [4], essa posição não existe! Daí, vai dar problema (ou deveria
     dar!). 
     
     Ainda em relação a essa soma. Vamos supor que já corrigiu o controle do array 
     (item [4]), de qualquer forma a soma ficaria errada, veja:
     Tendo ID=Idade[I]+Idade[I]. Supondo que no I=1 você digitou 18. Logo, ID=18+18
     -> ID=36.
     No I=2, você digitou 20 como idade. Logo, ID=20+20 -> ID=40, ou seja, ID vai ter
     sempre o dobro da última idade (em vez da soma de todas).
    }

    ***

     

    Minha sugestão:

    Pegue o seu código atual, e faça uma espécie de teste de mesa para entender mais ou menos como está a situação atual.

     

    Anote as variáveis num papel ou no Bloco de Notas do Windows, ex.:

     

    As variáveis começam com esse valor (pelo menos seria o padrão)

    IDADE:
    [1] [2] [3] [4] [5] [6] [7] [8 [10] //posição
     0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0  //valor na posição
    ID   = 0
    Soma2= 0
    I    = 0

    Daí, a cada linha que você for executando mentalmente, vai atualizando elas. Ex.:

     

    Após iniciar o FOR, a variável que está como controle (Soma2) ficará com o valor que atribuiu lá, ou seja, 1.

     

    IDADE:
    [1] [2] [3] [4] [5] [6] [7] [8 [10] //posição
     0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0  //valor na posição
    ID   = 0
    Soma2= 1
    I    = 0

    Na segunda linha dentro do for, temos um "readln(Idade[i ]);", quanto vale "I" nesse momento? "0", daí, na posição "0" de idade, terá o valor que você quiser atribuir, ex.: 30. Ao ir para tabela de variáveis, verás que não existe a posição "0". Entendeu?

     

    Após, tente corrigir o código e faça esse mesmo teste de mesa (se mudar as variáveis no programa, precisa atualizar na tabela) e veja como o programa se comporta. Vai testando, e entendendo o fluxo... com a prática, dá pra ir meio que fazendo de cabeça... :)

     

    No aguardo.

    Editado por Simon Viegas

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Crie uma conta ou entre para comentar

    Você precisar ser um membro para fazer um comentário






    Sobre o Clube do Hardware

    No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

    ×