Ir ao conteúdo

Posts recomendados

Postado
 

Olá pessoal, sou iniciante em programação, iniciante mesmo e estou com o problema.

Estou fazendo um exercício do livro no capítulo sobre registros, porém quando vou colocar o vetor dá problema ao executar o programa, ainda não terminei o exercício pois gosto de ir testando cada passo que vou fazendo, mas vou colocar o código do que eu já fiz e a mensagem de erro.

 

A mensagem: Sintaxe incorreta na declaração de variáveis. Ai informa que é na linha referente ao registro ao campo bimestre, já olhei o livro de novo fiz da maneira que consta lá e não dá certo, testei também o código do livro e deu o mesmo problema.

Algoritmo "escola"

tipo
    bimestre = vetor [1..4] de inteiro
    escola = registro
           nome: caractere
           nota: bimestre
    fimregistro
    
var
   aluno: vetor[1..20] de escola
   i, j: inteiro
   resp: caractere
inicio
      escreval ("Digite uma opção válida: ")
      escreval ("1 - Cadastrar notas bimestrais")
      escreval ("2 - Apresentar todos os alunos cadastrados")
      escreval ("3 - Pesquisar aluno")
      leia (op)
      escolha op
              caso 1
              escreval ("Cadastrar notas bimestrais")
              resp <- "sim"
              i <- 1
              enquanto (resp = "sim") faca
                   escreval ("Nome:..")
                   leia (aluno.nome[i])
                   para j <- 1 ate 4 faca
                        escreval ("Nota:..")
                        leia (aluno.nota[i])
                   fimpara
                   escreval ("Deseja cadastrar outro aluno?")
                   leia (resp)
              fimenquanto
Fimalgoritmo

 

  • Membro VIP
Postado

Olá @Jacqueline Santos.

 

3 horas atrás, Jacqueline Santos disse:

A mensagem: Sintaxe incorreta na declaração de variáveis. Ai informa que é na linha referente ao registro ao campo bimestre, já olhei o livro de novo fiz da maneira que consta lá e não dá certo, testei também o código do livro e deu o mesmo problema.

 

A lógica da sintaxe está correta, mas as versões do VisuAlg em si é que não está aceitando (por limitação? bug das versões?).. nem na "versão padrão" 3.0.6.5, nem na versão mais recente "3.0.7.0". Testei na 2.0, e lá nem aceita a declaração de tipos.

 

Então, no Pascal, que é um dos "pais" do VisuAlg essa estrutura estaria correta. Em fim...

 

Como o VisuAlg não está aceitando declaração de tipos sendo vetores, seu código poderia ficar assim:

 

tipo
    t_boletim = registro
           nome :caractere
           nota :vetor[1..4] de inteiro
    fimRegistro

Só que o VisuAlg também não aceita declaração de vetores dentro de um registro, rs. Aí lenhou tudo!!! (talvez por está na sessão de tipos ainda).

 

Outra forma seria assim:

var
   alunos: vetor[1..20] de registro
                             nome :caractere
                             nota :vetor [1..4] de inteiro
                           fimRegistro

Advinha? também não aceita.


RESUMINDO:

Não vai rolar utilizar essa estrutura de registro / vetores no VisuAg... (a não ser que encontre uma versão do VisuAlg que esteja funcionando... tente ver se no livro aparece qual versão eles usaram)

 

 

Daí, ou você reformula a lógica do algoritmo, ou parte para outra linguagem... como por exemplo, o Pascal, que é muito semelhante (apenas os comandos são em inglês... vulgo "inglês instrumental"). Ficaria com algo assim:

program ExemploXXLivroYYYY;
uses
  CRT; //carrega comandos extras como CrlScr, ReadKey, TextColor, TextoBackground etc

type
  t_Notas = array [1..4] of integer;
  t_Alunos = record
               nome :string;
               nota :t_Notas;
             end;

var
  alunos :array[1..3] of t_Alunos;
  contAlunos, i :byte;
  resp :char; //usei char em vez de string, pois só precisa de uma letra (vai aceitar qqr resposta com "s")
  op :char;
begin
contAlunos := 0;
writeln('Digite uma opção válida: ');
writeln('1 - Cadastrar notas bimestrais');
writeln('2 - Apresentar todos os alunos cadastrados');
writeln('3 - Pesquisar aluno');
readln(op);
case op of
  '1':begin
      writeln('Cadastrar notas bimestrais');
      resp := 's';
      while (resp = 's') do
        begin
        contAlunos := contAlunos + 1;
        ClrScr;
        writeln('ALUNO ', contAlunos);
        writeln;
        write  ('Nome: ');
        readln(alunos[contAlunos].nome);
        writeln;
        for i := 1 to 4 do
          begin
          write  (' Nota ', i, ':');
          readln(alunos[contAlunos].nota[i]);
          end;
        writeln;
        writeln('Deseja cadastrar outro aluno? (S / N)');
        readln(resp);
        end;
      end;
      
  '2':begin
  
      end;
      
  '3':begin
  
      end;
   else //caso não seja alguma opção anteirior. obs.: é facultativo
    begin //esse begin/end aqui tb é facultativo para esse else, mas pode deixar
    
    end;
  end; //fim case op
end.

 

Caso queira migrar pro Pascal, como visto, a lógica será muito próxima do VisuAlg, mas com a vantagem do compilador ser mais robusto e flexível. O VisuAlg tem muita limitação boba (como essa de "tipos com vetores").. recomendo.

 

Outra coisa... quando entrar no conceitos de funções e procedimento, lá no VisuAlg NÃO DÁ para passar um vetor por parâmetro, já no Pascal dá... isso é muito útil e irá fazer falta lá.

 

Inicialmente sugeriria utilizar o PascalZim.

 

Qualquer dúvida ou comentários é só postar.

 

No aguardo.

Postado

Obrigada pela ajuda rsrs, então no visualg eu tentei inclusive das formas que você informou e até as formas até as formar criativas e mesmo assim não deu certo, então deve ser problema mesmo no visualg mesmo, acabei fazendo o problema de outra maneira mas deu certo no final.

Novamente, obrigada pela ajuda 😀

  • Membro VIP
Postado

@Jacqueline Santos,

 

2 horas atrás, Jacqueline Santos disse:

Obrigada pela ajuda rsrs, então no visualg eu tentei inclusive das formas que você informou e até as formas até as formar criativas e mesmo assim não deu certo, então deve ser problema mesmo no visualg mesmo, acabei fazendo o problema de outra maneira mas deu certo no final.

Novamente, obrigada pela ajuda 😀

 

Que bom então.

 

Poste seu código aqui para analisarmos e, também, poder servir de base para outros visitantes.

 

No aguardo.

Postado

@Simon Viegas Então o problema era para ser resolvido com usando registros e o vetor dentro do registro, mas como não deu certo e eu queria resolver o problema mesmo assim, ai usei vetor e matriz, vou colocar o código para vocês analisarem e peço perdão pelos erros que encontrarem no código, estou quebrando a cabeça para aprender isso rsrs.

Algoritmo "turma"
var
   nome: vetor[0..4] de caractere
   media: vetor[0..4] de real
   notas: vetor[0..4, 0..4] de real
   i, j, inicial, meio, final, x, y, op: inteiro
   total, num, m: real
   resp,resp2, busca, aux: caractere
   acha: logico
inicio
   i  <- 0
   resp2 <- "sim"
   enquanto (resp2 = "sim") faca
      escreval ("informe uma das opções: ")
      escreval ("1 - Cadastrar notas de alunos")
      escreval ("2 - Pesquisar aluno")
      escreval ("3 - Apresentar todos os alunos")
      leia (op)
      escolha op
      caso 1
         resp <- "sim"
         escreval ("Cadastrar alunos: ")
         enquanto (resp = "sim") e (i <= 4) faca
            total <- 0
            escreval ("Nome..: ")
            leia (nome[i])
            para j <- 0 ate 4 faca
               escreval ("Nota:.. ", j, "ºBimestre")
               leia (notas[i,j])
               total <- total + notas[i,j]
            fimpara
            media[i] <- total / 5
            escreval ("Deseja cadastrar novo aluno?")
            leia(resp)
            i <- i + 1
         fimenquanto
         para x <- 0 ate 3 faca
            para y <- x + 1 ate 4 faca
               se (nome[x] > nome[y]) entao
                  aux <- nome[x]
                  nome[x] <- nome[y]
                  nome[y] <- aux
                  m <- media[x]
                  media[x] <- media[y]
                  media[y] <- m
               fimse
            fimpara
         fimpara
      caso 2
         escreval ("Pesquisar alunos")
         limpatela
         escreval ("Informse a pesquisa: ")
         leia (busca)
         inicial <- 0
         final <- 4
         acha <- falso
         enquanto (inicial <= final) e (acha = falso) faca
            meio <- (inicial + final) div 2
            se (busca = nome[meio]) entao
               acha <- verdadeiro
            senao
               se (busca < nome[meio]) entao
                  final <- final - 1
               senao
                  inicial <- inicial + 1
               fimse
            fimse
         fimenquanto
         se (acha = verdadeiro) entao
            escreval ("Pesquisa localizada: ")
            escreval (nome[meio])
            se (media[meio] >= 5) então
               escreval ("Aprovado")
            senao
               escreval ("Reprovado", media[meio])
            fimse
         senao
            escreval ("Aluno não localizado")
         fimse
      caso 3
         escreval ("Apresentar todos os alunos")
         para i <- 0 ate 4 faca
            se (media[i] >= 5) entao
               escreval ("Aluno:..   ", nome[i], "   Média:.. ", media[i], "   Aprovado")
            senao
               escreval ("Aluno:..   ", nome[i], "   Média:.. ", media[i], "   Reprovado")
            fimse
         fimpara
      fimescolha
      escreval ("Deseja fazer uma nova operação? ")
      leia (resp2)
   fimenquanto
Fimalgoritmo

 

  • Curtir 1

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

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!