Ir ao conteúdo
  • Cadastre-se

Simon Viegas

Moderadores
  • Total de itens

    4.175
  • Registro em

  • Qualificações

    0%

Reputação

2.179

Sobre Simon Viegas

  • Data de Nascimento 22/06/1982 (37 anos)

Informações gerais

  • Cidade e Estado
    Salvador/BA
  • Sexo
    Masculino

Outros

  • Biografia
    Carregando...
  • Ocupação
    Técnico e Analista de Sistemas
  • Interesses
    Tecnologia
  1. @Joao didy, sei que já passou os 3 dias, mas se quiser dar continuidade... Segue alguns pontos: Aqui está o cerne da definição do algoritmo. Como ele fala do cadastro de clientes, todos os dados do cliente precisam ser armazenados. Uma forma intuitiva seria criar um vetor para cada "atributo" do cliente, ou seja: cada "dado" do cliente ficaria armazenado num vetor diferente, e seriam associados a uma mesma posição... Ex: program Cadastro_de_clientes; (* 1 – Cadastrar cliente 2 – Consultar cliente por nome 3 – Consultar cliente por CPF 4 – Editar informações do cliente (consultar por nome) 5 – Mostrar todos os clientes 6 – Mostrar todas as mulheres 7 – Mostrar todos os homens 8 – Calcular média de: idade, peso, altura 9 – Calcular média de: idade, peso, altura dos homens 10 – Calcular média de: idade, peso, altura das mulheres 11 - SAIR *) uses CRT; var vetNome :array [1..5] of string; vetCPF :array [1..5] of string; vetSexo :array [1..5] of string; vetIdade :array [1..5] of integer; vetPeso :array [1..5] of real; vetAltura :array [1..5] of real; opcao :string[2]; totalRegistros :integer; BEGIN opcao := '0'; totalRegistros := 0; while (opcao <> '11') do begin ClrScr; writeln(''); writeln(' *** MENU ***'); writeln(''); writeln(' 1 Cadastrar cliente '); writeln(' 2 Consultar cliente por nome '); writeln(' 3 Consultar cliente por CPF '); writeln(' 4 Editar informações do cliente (consultar por nome) '); writeln(' 5 Mostrar todos os clientes '); writeln(' 6 Mostrar todas as mulheres '); writeln(' 7 Mostrar todos os homens '); writeln(' 8 Calcular média de: idade, peso, altura '); writeln(' 9 Calcular média de: idade, peso, altura dos homens '); writeln(' 10 Calcular média de: idade, peso, altura das mulheres'); writeln(' 11 SAIR '); writeln(''); write (' => '); readln(opcao); case opcao of '1' :begin totalRegistros := totalRegistros + 1; writeln(''); writeln(' *** CADASTRO DE CLIENTES ***'); writeln(''); write ('Nome : '); readln(vetNome[totalRegistros]); write ('CPF : '); readln(vetCPF[totalRegistros]); //... end; '2' :begin end; end; //fim case end; END. Uma boa forma de testar é colocar para exibir os dados cadastrados, ex.: case opcao of '1' :begin totalRegistros := totalRegistros + 1; writeln(''); writeln(' *** CADASTRO DE CLIENTES ***'); writeln(''); write ('Nome : '); readln(vetNome[totalRegistros]); write ('CPF : '); readln(vetCPF[totalRegistros]); //... end; '2' :begin end; '00' :begin for i:=1 to totalRegistros do begin writeln('Nome : ', vetNome[i]); writeln('CPF : ', vetCPF[i]); //... readln(); end; end; end; //fim case Aí já demonstro dicas bacanas: não tente implementar tudo de uma vez.. nem muito menos precisar colocar dados "precisos" para testar. Outra forma mais elegante e funcional é utilizando registros. Ex.: var registrosCliente :array [1..5] of record nome :string; CPF :string; sexo :char; idade :byte; peso :byte; altura :real; end; totalRegistros :integer; opcao :string[2]; i :integer; case opcao of '1' :begin totalRegistros := totalRegistros + 1; writeln(''); writeln(' *** CADASTRO DE CLIENTES ***'); writeln(''); write ('Nome : '); readln(registrosCliente[totalRegistros].nome); write ('CPF : '); readln(registrosCliente[totalRegistros].CPF); //... end; '2' :begin end; '00' :begin for i:=1 to totalRegistros do begin writeln('Nome : ', registrosCliente[i].nome); writeln('CPF : ', registrosCliente[i].CPF); //... readln(); end; end; end; //fim case O resultado será exatamente o mesmo do uso de "várias vetores", mas terá a vantagem de "agrupar" tudo num vetor só (no caso fiz um "vetor de registros". Com registros, daria para fazer por exemplo isso: registrosCliente[1] := registrosCliente[3]; Ou seja: todos os "atributos" de um registro serão copiados para o outro. Com vetores, teria que fazer um a um. Vai ficar mais fácil quando for usar funções e procedimentos, onde pode passar todos os dados do cliente de uma vez só, já que está em "registro". O mesmo se for passar todos, no caso passaria o vetor de registro... tudo em uma variável só, em vez de um para cada atributo... Vai facilitar também caso queira utilizar arquivos binários que conseguirão salvar "registros completos" de uma só vez" (em vez do tal citado "um cada atributo")... por aí vai...(* dá para usar com arquivos de textos também, que podem ser editados por qualquer editor de texto). Uma base seria esta. Basta colocar os outros atributos e fazendo um a um as opções do menu. Segue código de referência: program Cadastro_de_clientes; (* 1 – Cadastrar cliente 2 – Consultar cliente por nome 3 – Consultar cliente por CPF 4 – Editar informações do cliente (consultar por nome) 5 – Mostrar todos os clientes 6 – Mostrar todas as mulheres 7 – Mostrar todos os homens 8 – Calcular média de: idade, peso, altura 9 – Calcular média de: idade, peso, altura dos homens 10 – Calcular média de: idade, peso, altura das mulheres 11 - SAIR *) uses CRT; type tRegistroCliente = record nome :string; CPF :string; sexo :char; idade :byte; peso :byte; altura :real; end; var registrosCliente :array [1..5] of tRegistroCliente; clienteNovo, clienteAlterado :tRegistroCliente; totalRegistros :integer; opcao :string[2]; i :integer; BEGIN opcao := '0'; totalRegistros := 0; while (opcao <> '11') do begin ClrScr; writeln(''); writeln(' *** MENU ***'); writeln(''); writeln(' 1 Cadastrar cliente '); writeln(' 2 Consultar cliente por nome '); writeln(' 3 Consultar cliente por CPF '); writeln(' 4 Editar informações do cliente (consultar por nome) '); writeln(' 5 Mostrar todos os clientes '); writeln(' 6 Mostrar todas as mulheres '); writeln(' 7 Mostrar todos os homens '); writeln(' 8 Calcular média de: idade, peso, altura '); writeln(' 9 Calcular média de: idade, peso, altura dos homens '); writeln(' 10 Calcular média de: idade, peso, altura das mulheres'); writeln(' 11 SAIR '); writeln(''); write (' => '); readln(opcao); case opcao of '1' :begin totalRegistros := totalRegistros + 1; writeln(''); writeln(' *** CADASTRO DE CLIENTES ***'); writeln(''); write ('Nome : '); readln(clienteNovo.nome); write ('CPF : '); readln(clienteNovo.CPF); //... //aqui poderia perguntar se deseja "salvar" ou não.. registrosCliente[totalRegistros] := clienteNovo; end; '2' :begin end; '00' :begin //*utilizado em testes for i:=1 to totalRegistros do begin writeln('Nome : ', registrosCliente[i].nome); writeln('CPF : ', registrosCliente[i].CPF); //... readln(); end; end; end; //fim case end; END. Qualquer dúvida é só perguntar. adicionado 8 minutos depois Adendo: Tem tiver utilizando o Free Pascal (como eu) e quer colocar os acentos corretamente, basta utilizar diretiva, como no exemplo abaixo: {$CODEPAGE UTF8} program Cadastro_de_clientes; (* 1 – Cadastrar cliente //..
  2. Já no Pascal ("pai" do VisualG), dá para usar de boa. A sintaxe é bem semelhante ao do VisualG, apenas é em inglês. Segue um exemplificação: program Biblioteca; // { Função: } // { Autor : } // { Data : 05/02/2020} uses CRT; var titulos :array[0..2] of string; autores :array[0..2] of string; editoras :array[0..2] of string; anos :array[0..2] of integer; isbns :array[0..2] of string; totalLivros :integer; login, senha :string; tentativas :integer; autenticado :boolean; opcao :char; i :integer; BEGIN totalLivros := 0; tentativas := 0; autenticado := true; while (tentativas < 3) and (autenticado = false) do begin writeln(''); writeln('** Biblioteca **'); writeln(''); writeln('-----------------------'); write ('|Login: '); readln(login); writeln('-----------------------'); write ('|Senha: '); readln(senha); writeln('-----------------------'); writeln; if (login = 'usuario') and (senha = 'senhausuario') then autenticado := true else begin tentativas := tentativas + 1; writeln('-------> Login ou senha incorretos <-------'); writeln; readln; end; end; if (autenticado = false) then exit; while (opcao <> '0') do begin ClrScr; writeln('| ID | Opção |'); writeln('|====|=========================|'); writeln('| #1 | Cadastrar livro |'); writeln('| #2 | Buscar livro |'); writeln('| #3 | Emprestimo/devolução |'); writeln('| #4 | Reserva |'); writeln('| #5 | Exibir acervo |'); writeln('| #6 | Cadastrar Leitor |'); writeln('| #7 | Trocar usuarior |'); writeln('| | |'); writeln('| #0 | Sair |'); writeln(' ==== ========================= '); writeln(''); write ('==> '); readln(opcao); case opcao of '1' :begin write('Título : '); readln(titulos[totalLivros]); write('Autor : '); readln(autores[totalLivros]); write('Editora: '); readln(editoras[totalLivros]); write('Ano de lançamento: '); readln(anos[totalLivros]); write('ISBN: '); readln(isbns[totalLivros]); writeln; totalLivros := totalLivros + 1; ClrScr; end; '5' :begin for i := 0 to totalLivros-1 do begin writeln('LIVRO ', i+1); writeln(''); writeln('Título : ', titulos[i]); writeln('Autor : ', titulos[i]); writeln('Editora : ', titulos[i]); writeln('Ano : ', anos[i]); writeln('ISBN : ', isbns[i]); readln; end; end; end; //fim case end; END. É praticamente igual... Mas aqui as coisas funcionam, como o tão útil uso de registros: program Biblioteca; // { Função: } // { Autor : } // { Data : 05/02/2020} uses CRT; var regLivros :array [0..2] of record titulo :string; autor :string; editor :string; ano :integer; isbn :string; end; totalLivros :integer; credencial :record login :string; senha :string; end; tentativas :integer; autenticado :boolean; opcao :char; i :integer; BEGIN totalLivros := 0; tentativas := 0; autenticado := true; while (tentativas < 3) and (autenticado = false) do begin writeln(''); writeln('** Biblioteca **'); writeln(''); writeln('-----------------------'); write ('|Login: '); readln(credencial.login); writeln('-----------------------'); write ('|Senha: '); readln(credencial.senha); writeln('-----------------------'); writeln; if (credencial.login = 'usuario') and (credencial.senha = 'senhausuario') then autenticado := true else begin tentativas := tentativas + 1; writeln('-------> Login ou senha incorretos <-------'); writeln; readln; end; end; if (autenticado = false) then exit; while (opcao <> '0') do begin ClrScr; writeln('| ID | Opção |'); writeln('|====|=========================|'); writeln('| #1 | Cadastrar livro |'); writeln('| #2 | Buscar livro |'); writeln('| #3 | Emprestimo/devolução |'); writeln('| #4 | Reserva |'); writeln('| #5 | Exibir acervo |'); writeln('| #6 | Cadastrar Leitor |'); writeln('| #7 | Trocar usuarior |'); writeln('| | |'); writeln('| #0 | Sair |'); writeln(' ==== ========================= '); writeln(''); write ('==> '); readln(opcao); case opcao of '1' :begin write('Título : '); readln(regLivros[totalLivros].titulo); write('Autor : '); readln(regLivros[totalLivros].autor); write('Editora: '); readln(regLivros[totalLivros].editor); write('Ano de lançamento: '); readln(regLivros[totalLivros].ano); write('ISBN: '); readln(regLivros[totalLivros].isbn); writeln; totalLivros := totalLivros + 1; ClrScr; end; '5' :begin for i := 0 to totalLivros-1 do begin writeln('LIVRO ', i+1); writeln(''); writeln('Título : ', regLivros[i].titulo); writeln('Autor : ', regLivros[i].autor); writeln('Editora : ', regLivros[i].editor); writeln('Ano : ', regLivros[i].ano); writeln('ISBN : ', regLivros[i].isbn); readln; end; end; end; //fim case end; END. No caso aí, um vetor de registros. Daria também fazer algo assim: var regLivros :array [0..2] of record titulo :string; autores :array [0..5] of string; editores :array [0..5] of string; ano :integer; isbn :string; end; Acessando com algo como: regLivros[i].autores[j] Quando tiver utilizando funções e procedimentos, no Pascal também dá para passar vetores por parâmetro; dá para usar cores diferentes para o texto e fundo... dá para posicionar o "cursor" onde quiser... veja um exemplo deste último: while (tentativas < 3) and (autenticado = false) do begin ClrScr; writeln(''); writeln('** Biblioteca **'); writeln(''); writeln('-----------------------'); writeln('|Login: '); writeln('-----------------------'); writeln('|Senha: '); GotoXY(9, 5); readln(credencial.login); GotoXY(9, 7); readln(credencial.senha); writeln('-----------------------'); writeln; Tela: Como como os texto do login e senha já estão escritos... fica mais com uma cara de formulário.. Por aí vai. No caso, temos algumas opções: - continuar no VisualG, dando uma revisada no teu código... dar uma aprimorada no algoritmo... (mas esquecendo do uso de arquivos); - ir para ao Pascal e começar a implementar por lá. Se tiver interesse, poderia iniciar pelo PascalZim; - ir para outra linguagem popular como o C.... Nesse caso, muda um pouquinho as estruturas, mas dá para pegar de boa também. - outra opção... No aguardo.
  3. @Jhonathan Barcelos, o uso de arquivos no VisualG é bastante limitado. Pelo que vi, resumidamente, funciona assim: - tanto para ler do arquivo, tanto para escrever nele, usam-se o leia(); - se o arquivo tiver dados, você apenas vai ler, ou seja: cada leia() vai ficar lendo a próxima linha do arquivo até não ter mais linhas. Daí vai passar a ler do teclado; - caso o arquivo não exista, o VisualG vai criar o arquivo, e cada leia() vai ficar escrevendo no arquivo. Acho que não tem como parar... vai ficar usando o arquivo mesmo até fechar o programa. Ou algo bem próximo disto. RESUMINDO: esqueça o uso de arquivos no VisualG.
  4. Este exercício é para VisualG? pelo que sei (lembro), o VisualG não aceita vetores como parâmetro. Uma forma lógica de funcionar seria algo assim (mas não funcionam): procedimento tentandoUsarVetorComoParametro(x : vetor [1..5] de inteiro) outra, análoga ao Pascal: tipo t_meuVetor = vetor [1..5] de inteiro var meuVetor :t_meuVetor procedimento tentandoUsarVetorComoParametro(v : t_meuVetor) Mas no VisualG não aceita vetores como tipo, nem subrotinas aceitam tipos na definição do parâmetro. Logo, sugiro deixar a variável da matriz (vetor com 2 parâmetros) como variável global, e passa apenas L e C como parâmetro. Tenta fazer aí e posta o código aqui. adicionado 15 minutos depois Já no Pascal dá para usar vetores como parâmetro: program NomeDoMeuPrograma; type t_meuVetor = array [1..5] of integer; procedure tentandoUsarVetorComoParametro(x :t_meuVetor); begin writeln(x[2]); end; var meuVetor :t_meuVetor; begin meuVetor[1] := 2; meuVetor[2] := 7; meuVetor[3] := 11; tentandoUsarVetorComoParametro(meuVetor); //vai escrever 7 readln; end. Ou seja: apesar do VisualG ser meio que um "filho do Pascal", onde basicamente seria uma "versão em Português", esta funcionalidade de "passar vetores por parâmetro" não está disponível (a não ser que eu esteja enganado, é claro). @MATEUS GOMES85, sugiro que migre logo para o Pascal ou o C puro. Entendo que o VisualG serve apenas como um "chamariz" para o mundo das técnicas de programação... especificamente pela questão de está em Português (o inglês assusta alguns iniciantes). Como você já tem uma base, vá para uma linguagem mais avançada!!! As técnicas de programação são universais, mas você ficará muito menos limitado pela tecnologia. O VisualG tem suas vantangens, entretant,o ao mesmo tempo, tem muito bug e limitações! adicionado 25 minutos depois PS: No Pascal, fará quase tudo que é feito no VisualG e tento ainda mais flexibilidade. A sintaxe é muuuito semelhante (o VisualG se inspirou no Pascal)... meio que só muda para inglês. Já no C, terá todo um mundo de possibilidades!! Sugestão: Tente fazer estas mesmas questões que você já resolveu no Pascal. Desta forma, você NÃO precisará se preocupar tanto com a lógica, apenas com a "nova" sintaxe do Pascal (que é bem semelhante ao VisualG). Isso ajudaria a desenvolver a capacidade de adaptação / capacidade de aprender coisas novas...
  5. @naooko, poste o código que já conseguiu fazer e onde está com dúvidas... informe também qual é o programa que está usando para editar/executar o código, pois temas várias versões de Portugol. No aguardo.
  6. Caro usuário, Seja bem-vindo ao Fórum do Clube do Hardware. No intuito de servir como fonte de pesquisa no caso de instituições de ensino, informamos que incorrer no resolvimento por completo de questões relacionadas a disciplinas escolares de cursos técnicos e faculdades podem ser revistas e removidas pela Equipe de Moderação do Clube do Hardware. Para sanar dúvidas sobre esse tipo de problema, por gentileza, publique o passo a passo do desenvolvimento da questão, projeto, monografia ou conteúdo em dúvida para que possamos analisar se a resposta está correta ou não, ou para que possa ser auxiliado com a dúvida no desenvolvimento do exercício. Infelizmente, não há como resolver os trabalhos pelos usuários. O objetivo do Fórum do Clube do Hardware é auxiliar seus usuários a encontrar soluções para que possam sanar suas dúvidas, e não de trazer soluções prontas para seus usuários. Além disso, copiar e colar respostas que não são de autoria própria do qualquer usuário é considerado plágio, o que é ilegal. Esperamos que compreenda. Atenciosamente, Equipe Clube do Hardware
  7. Falta agora as exemplos de linhas para assim implementar e testar um algoritmo.
  8. @João Paulo Ansiere, além da sugestão dos estudos paralelos, seguem alguns pontos: 1# AJUSTES DA POSTAGEM AQUI NO FÓFUM Por favor, transcreva o enunciado do texto, ou seja: em vez de utilizar uma imagem, inserir o texto correspondente na postagem. Desta forma, fica mais fácil para analisarmos os textos (como copiar partes) e também possibilita a indexação do conteúdo; 2# DESENVOLVIMENTO DO ALGORITMO PARA SOLUCIONAR O PROBLEMA Por definição, se exercício foi proposto para você, então você necessariamente já teve, no mínimo, contato com os requisitos para resolvê-lo, ou seja: você já viu laços de repetições, já viu registros, já viu vetores, já viu function e procedures etc, correto? Talvez para falta de experiência, tenha algumas dificuldade para dar um start... um pontapé inicial... ou relacionar uma "técnica" com a outra. Uma dica geral é NUNCA tentar fazer tudo de uma vez e nem com "uma cara de versão final".... Não se preocupe com enfeites, validações, regras de negócios etc. Vá fazendo coisas simples e aos poucos vá inserindo novos recursos do enunciado... naturalmente também vai adicionado melhorias. Ex.: A base do programa está relacionada ao tratamento de "registros" de Alunos. Sugiro ir implementando tratamentos de registros simples. Algo como: program NomeDoMeuPrograma; type tAluno = record nome: string; nota: real; numFaltas: integer; end; var aluno :tAluno; begin end. Nesta base acima, apenas foi implementado um tipo de registro relacionado ao cadastro de Alunos (os "atrubutos" que um aluno tem) e um variável para utilizar este registro. Daí, a sugestão seria simplesmente "ler os dados do Aluno, cadastrando nessa variável, e depois exibir os dados na tela". Ficando com algo assim: Poste o código aqui do que conseguiu fazer para analisarmos. Caso tenha dúvidas sobre algo, é só perguntar, mas tente fazer algo! Caso não tenha dúvidas, após postar o código aqui no Fórum, vai pra uma nova etapa, ex.: alterar o código para ler 4 notas (em vez de 1). Só faça isso!!!. Aí posta aqui e tira dúvidas se precisar... Após conseguir, implementa para calcular a média dessas 4 notas... após conseguir, implementa para ler mais de uma aluno (usar um vetor de registros)... etc etc... Lembrando: NÃO TENTE FAZER TUDO DE UMA VEZ. Vá fazendo aos poucos mesmo... não tenha pressa.. a medida que vai se acostumando, vai acelerando e começa fazer cada etapa mais rapidamente... mas NUNCA tente fazer mais de uma coisa de uma vez. Dividir um problema grande em vários problemas menos é mais prático e funcional. No aguardo.
  9. Talvez bastasse apenas o enunciado. De qualquer forma, boa sorte aê...
  10. Creio eu que para resolver um problema, primeiro é necessário entender qual é o problema. Concorda? No caso: Daí, você pode está criando um "novo problema", que pode ser "totalmente" diferente do problema real... ou seja: poderemos está tentando resolver OUTRO problema... Mas vamos lá: Uma forma seria a "óbvia" de "extrair de x em x letras... ex.: Mensagem: "onetwooneonetwo' "one" "two" "one" "one" "two" Mas imaginei duas outras formas de analisar a string: Ex.: Mensagem: "onetwooneonetwo" Extraindo de 3 em 3 temos (mas flutuando de 1 em 1): "one" (onetwooneonetwo) "net" (onetwooneonetwo) "etw" (onetwooneonetwo) "two" (onetwooneonetwo) etc Daí, analisa qual se repete mais. Ou forma seria análogo ao de cima, mais incluindo TODAS as combinações possíveis a partir das letras, ex.: "one" + "oen" + "noe" + "neo" + "eno" + "eon" (onetwooneonetwo) "net" + "nte" + "ent" + "etn" + "tne" + "ten" (onetwooneonetwo) etc Daí, analisa qual se repete mais... Para o de 5, extraia de 5 em 5 e faria seguiria a mesma lógica.
  11. O VisualG não é muito bom para tratar erros. Ele as vezes atrapalha mais do que ajuda! rs O que está errado nessa linha é o operador lógico... Esse "=/=" não existe no VisualG! Caso tenha dúvidas em qual seria o comando, poderia consultar no Google... por exemplo por "diferente em VisualG". . O comando correto seria "<>". Basta substitui-los. Além disso, ficou faltando os fimSe para cada um dos se. Nesse caso, seria necessário entender o que você estaria tentando fazer, pois as posições onde vão colocar os fimSe, vão influenciar no resultado da lógica... em fim... Ex.: Algoritmo "semnome" Var nome : caractere idade: inteiro cpf: inteiro x : inteiro Inicio escreval("Digite seu nome completo: ") leia(nome) escreval("Digite a sua idade: ") leia(idade) escreval("Digite o número do seu CPF: ") leia(cpf) escreval("Confirmação dos Dados Informados: ") escreval("") escreval("O seu nome é " ,nome, " ,? Se sim, digite 1:") leia(x) se (x <> 1) entao escreval("Digite novamente seu nome: ") leia(nome) escreva("O seu nome " ,nome, " ? Se sim, digite 1:") leia(x) se (x = 1) entao escreval("Sua idade é ",idade, " ? Se sim, digite 1:") leia(x) se (x <> 1) entao escreval ("Digite novamente sua idade: ") leia(idade) escreval("Sua idade é ",idade," anos ? Se sim, digite 1: ") leia(x) se (x = 1) entao escreval("O seu CPF é " , cpf , " ? Se sim, digite 1: ") leia(x) se (x <> 1) entao escreval("Digite novamente seu CPF: ") leia(cpf) escreval("Seu CPF é: " , cpf , " ? Se sim, digite 1: ") se (x = 1)entao escreval ("Nome: ", nome) escreval ("Idade: ", idade, " anos" ) escreval ("CPF: ", cpf) escreva ("Dados inseridos !") fimse fimse fimse fimse fimse fimse Fimalgoritmo Veja...inicialmente você se esbarrou num problema de sintaxe (está tentando usar um comando que não existe no VisualG e esqueceu de colocar os fimSe), mas aí também vai entrar num problema de lógica, ou seja: está tentando implementar algo que talvez não faça muito sentido prático. Entende? para o teu programa funcionar, o usuário sempre teria que responder uma vez que o dado está incorreto (responder algo diferente de 1), e após digitar novamente e responder que "1"... Qualquer uso fora dessa ordem, o programa não vai funcionar direito. Sugiro procurar listas de exercícios na internet, geralmente vão seguir uma sequência de "mais fácil para os mais complexos". Ex.: Comandos de Decisão Simples e Encadeados Exemplo de resposta de um exercício: 3. Crie um algoritmo que leia dois valores (x e y) e informe qual o menor valor algoritmo "semnome" //Crie um algoritmo que leia dois valores (x e y) e informe qual o menor valor var x, y : inteiro Inicio escreval("Informe o valor de X") leia(x) escreval("Informa o valor de Y") leia(y) se (x < y) entao escreval("X é menor que Y") fimSe se (y < x) entao escreval("Y é menor que X") fimSe fimAlgoritmo Sugiro tentar fazer todos os exercício de "COMANDOS DE DECISÃO SIMPLES" e postar as respostas aqui. Caso tenha dúvidas sobre algum, é só postar.
  12. @Junior Bauer, vá fazendo o programa aos poucos. Por exemplo: apenas leia um peso e informe o IMC. Coloque um código simples para funcionar.
  13. O quê não está funcionando? está acontecendo o quê? Qual o enunciado do problema?... Tudo depende do que você quer que aconteça.....
  14. @Debora_Amaral, tem 2 problemas aí.. 1. Erros de sintaxe; 2. Erros de lógica. O primeiro é referente a regras das estruturas do VisualG. Cada comando funciona com determinadas estruturas estabelecidas. Por exemplo: No primeiro momento você postou: Para facilitar a ajuda, você precisaria informar o que estava ocorrendo de inesperado... ou seja: o que está acontecendo para você está perguntando "o que está errado"? Analisando e testando o código, provavelmente ocorreu o mesmo da imagem que você postou: OU poderia ser que estaria ocorrendo outro erro, mas como não foi informando, não temos como saber precisamente... Então, nesse contexto acima, o VisualG está informando que em determinado momento ele estava esperando o comando então (sem o "~"), mas não o encontrou.. No caso, como tem o comando se, o "compilador" vai necessariamente relacionar com um entao (sem o "~") correspondente (e também com o seu fimse), como não achou, dá erro. Observe ali que você colocou o comando com acento.. (não tem!). Para corrigir, bastaria reescrever o comando corretamente. Pronto. Isso foi um erro de sintaxe. Testando novamente, veria que iria dar erro no "fimrepita", pois esse comando não existe no VisualG, ou seja: seria mais um errinho de sintaxe... o repita está relacionado com o ate (sem o acento). O que você fez tem até sentido, mas o VisualG não tem esse fimrepita. (não foi estruturado para funcionar assim) Corrigido os erros de sintaxe, teu código ficaria mais ou menos assim: algoritmo "semnome" var num: inteiro inicio escreval("Verifique se um numero é perfeito !") repita escreval("Informe o numero : ") leia(num) se (num < 6) e (num <> 0) entao escreval("Este numero não é perfeito !") senao fimse ate (num = 0) fimalgoritmo Então, nesse caso não existirá mais erros de sintaxes... todas os comando estão estruturados corretamente... (obs.: só o detalhe do senao, que está sem nenhum comando dentro, o que fica meio estranho, mas não seria um erro de sintaxe, apenas erro de lógica - ou seja: se não tem comando relacionado, não precisaria existir este senao). Daí entra a questão da lógica! Pelo que está escrito na código: O objeto do programa é meio que retornar se um determinado número, que foi informado pelo usuário, é perfeito ou não... certo? Aí vem a pergunta: "O que é um número perfeito?" O enunciado define o que é essa tal de número perfeito? você já entendeu o que é um "número perfeito"? Primeiro você precisa entender o problema. O que o autor do enunciado quer! Não da para fazer algo do que não se sabe do que trata... Primeiro entenda o problema, depois parte para a codificação de um programa... veja, o programa meio que serviria apenas uma ferramenta para "automatizar" o processo... mas o foco do exercício em si é aprender a aprender... (como aprender o que é um "número perfeito" e aprender como traduzir isso para uma linguagem de programação). Sugiro que poste o enunciado completo e o que você entendeu do que é um "número perfeito". Após, dê 3 exemplos de números perfeitos e 3 exemplos de números que não são perfeitos. Depois parte para codificação do programa.
  15. Ah! de boa! O VisualG de vez em quando dar uns erros de memória, . Adendo: Perceba na imagem como um valor do IMC está um pouco a afastado para direita. Isso acontece pois "reservou" muito espaço a esquerda desnecessariamente: Poderia colocar algo assim: EscrevaL("Seu IMC é de ", IMC:1:2)

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

×
×
  • Criar novo...

Aprenda_a_Ler_Resistores_e_Capacitores-capa-3d-newsletter.jpg

ebook grátis "Aprenda a ler resistores e capacitores", de Gabriel Torres

GRÁTIS! BAIXE AGORA MESMO!