Ir ao conteúdo
  • Cadastre-se

Simon Viegas

Moderadores
  • Total de itens

    3.604
  • Registro em

  • Última visita

  • Qualificações

    0%

Reputação

1.761

Sobre Simon Viegas

  • Data de Nascimento 22-06-1982 (36 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. 4# Sobre: Não... em relação ao fimAlgoritmo, necessariamente tem que removê-los!!! (não há o que discutir), ou seja, a questão estará em encontrar outra solução, beleza? 5# adicionado 5 minutos depois Sobre: Esse trecho está solto, ou seja, se tiver level 10 ou maior vai "evoluir"... independente da escolha do 1 ou 2. Seria assim mesmo? ou deveria executar se apenas escolher a opção 1?
  2. Olá. @Biscatão da Boate, já adiantando alguns "probleminhas" . 1# Apesar de fazer sentido, o comando fimAlgoritmo no Visualg não é um comando para "finalizar o algoritmo", mas sim apenas como parte da sintaxe do "programa principal", ou seja, só deve existir um fimAlgoritmo no código... (aquele que fica na última linha do código. Esse é referente à sequência algoritmo/inicio/fimalgoritmo). Ex.: Ali dentro do primeiro se, não pode usar o fimAlgoritmo. Então, creio eu que não exista um comando para "finalizar na marra" no Visualg. No Pascal talvez servisse o halt ou exit. Um comando que poderia chegar próximo do que precisa seria interrompa. RESUMINDO: Troque todos os fimAlgoritmo por interrompa, menos o último, é claro. Utilize o CTRL+U para "substituir". 2# Sobre: Esse trecho acima fica dentro de decisão(). Na ultima linha você usa novamente decisão()... Logo, um procedimento está invocando um novo procedimento... NÃO PODE FAZER ISSO. (obs.: no futuro verás que isso é chamado de recursividade, e só é usado em contextos específicos. Que não é o seu caso.) RESUMINDO: Em vez de reinvocar o procedimento, utilize um laço de repetição. Ex.: procedimento decisão() inicio repita decis <- 0 limpaTela escreval(" O que deseja fazer? ") escreval(" 1 - MOBAR EM UM MAPA ") escreval(" 2 - VERIFICAR STATUS DO CHAR ") escreval(" 3 - FECHAR JOGO ") leia(decis) limpaTela se decis = 3 entao interrompa fimse se level >= 10 entao dn[1] <- dn[1] + 30 dn[2] <- dn[2] + 30 fimse ate desci=3 fimProcedimento Entendeu? os procedimentos e funções no Visualg são como subprogramas. Se você já abriu ele, você não precisa reabrir quando chega no fim, basta "volta para o início". 3# Após trocar os fimAlgoritmo por interrompa, pressione CTRL+G para reindentar o código... verás que está faltando coisas ou tem coisas fora de ordem... pois o código está desalinhado... provavelmente relacionado aos fimse dos se ATENÇÃO: Infelizmente o Visualg NÃO ANALISA CÓDIGO POR COMPLETO NA COMPILAÇÃO, no caso, alguns erros só aparecem quando a linha vai ser executada... Daí é necessário ter uma atenção maior na hora de criar ou editar as estruturas... *** No aguardo.
  3. Olá. Vou tentar complementar: 1# Sobre: No caso, a sintaxe do Visualg, por algum motivo (provavelmente técnico), meio que trabalha com "comandos completos por linha"... ou seja, não funciona bem com "dois ou mais comando na mesma linha", nem funciona com "um comando separado em várias linhas". O curioso é que um "pai", o Pascal, funciona. Em fim, um dos detalhes que já demonstram essa limitação é que no Visualg não tem "um 'comando' para finalizar a linha". Lá no pascal, por exemplo, utilizam-se o ";"... aqui, deve ser o "fim da linha mesma". Não entendo muito bem. Alguns exemplo de "limitação do Visualg": a ) var nome :caracter kg, altu, IMC :real No Pascal essa separação por linhas funciona. No Visualg, não. Dá erro logo no kg. b ) No Pascal essa "junção" funciona, mas no Visualg não. Teria que fazer algo assim: senao se (IMC >= 17) e (IMC < 18.5) entao 2# Sobre: Nesse caso não precisa. Para o Visualg, a sintaxe das "expressões" lá do se estão corretas (tirando a questão se colocar na mesma linha), ou seja, não precisa de um () para estrutura do se em si. Seria assim: se RESULTADO_LÓGICO entao Assim é facultativo (no caso: não necessário): se (RESULTADO_LÓGICO) entao Já entre os operadores lógicos precisa: Assim não pode: Se IMC >= 17 e IMC < 18.5 entao E assim?: Se (IMC >= 17 e IMC < 18.5) entao Também não serve... perceba que esses () vão entrar na questão do "facultativo" lá de cima, logo, é equivalente a não ter parênteses, daí não vai funcionar! 3# Sobre o erro em sim. Então, qual versão do Visualg está utilizando? tem como postar o print da tela com o resultado? Se está retornando "Muito bem, você está no peso ideal!", alguma outra coisa estranha pode está acontecendo... pode ser algum outro problema. Ou o código fonte está bugado (algum caractere oculto); ou a versão do Visualg está bugada... ou alguma outra coisa... Em fim.. pelo que o eu vi, esse erro, citado por @devair1010, compromete o código todo... pois o se "deixa de existir" e acaba ficando com o fimse a mais. De um modo geral, recomendo utilizar a versão 3.0.6.5. Tem uma mais nova, acho que 3.0.7.0, mas não recomendo. *** No aguardo.
  4. Olá @Souza Alexandre. Sobre: Veja o enunciado: O enunciado não fala algo sobre ser aprovado ou não. Ele quer apenas saber o nome do aluno que teve a maior nota, e o nome do aluno que teve a menor nota. No aguardo.
  5. @brunord2014, é necessário revisar toda a estrutura do código. Segue um código exemplo: algoritmo "FCdH" // Autor : Bruno // Data : 09/11/2018 // Descrição: //Programa que recebe diversos número inteiros e retorna quantos número foram //digitados, a soma desses números e a média dos números positivos. var n :inteiro //número digitado pelo usuário qtn :inteiro //quantidade de número digitados s :inteiro //soma dos números digitados qtp :inteiro //quantidade de número positivos sp :inteiro //soma dos números positivos mdp :real //media dos número positivos inicio n <- 0 qtn <- 0 s <- 0 qtp <- 0 sp <- 0 mdp <- 0 escreva("Por favor digite o primeiro número ou 0 para finalizar:") leia(n) se (n = 0) entao escreval("Algortmo finalizado sem calculos...") senao repita qtn <- qtn+1 //atualiza a quantidade de números digitados s <- s+n //atualiza a soma dos números se (n > 0) entao //se for positivo qtp <- qtp+1 //atualiza a qnt de número positivos sp <- sp+n //atualiza soma dos positivos fimSe escreval("Digite o próximo número ou 0 para finalizar: ") leia(n) ate (n = 0) //se for quer finalizar escreval() escreval("A quantidade de números digitados foi : ",qtn) escreval("A soma dos números digitados foi : ",s) se (qtp = 0 ) entao escreval("Você não digitou números positivos.") senao mdp <- sp/qtp //calcula média dos positivos escreval("A média de números positivos digitados foi: ",mdp) fimse fimSe fimAlgoritmo Se tiver com dúvidas sobre alguma parte, é só postar. No aguardo.
  6. Olá. 1# @Biscatão da Boate, você está colocando o mesmo menu em partes distintas. O menu deveria funcionar como um "centralizador", ou seja, nele escolhe uma opção qualquer, após executar a opção, volta para o mesmo menu. Dentro de cada opção pode, sem problemas, ter OUTROS menus.. ou repetir o código.. etc, mas ao terminar, volta para o mesmo menu central. Não pode de dentro de um item do menu tentar acessar um outro item deste menu. O sensato é voltar para o menu principal, que por sua vez poderá encaminhar para outro item dele. Algo assim: Código: Tente entender isso... o MENU "invoca" os seus itens... mas jamais* um item desse menu poderá "reinvocar" o menu. Em vez disso, faz esse item terminar, voltando assim para o menu, que por sua vez poderá invocar quem ele quiser. Nessa parte: Simplesmente vai deixar terminar esse item. Vai voltar para o menu que poderá escolher outra opção (incluindo essa mesma). *** Qualquer dúvida é só postar. adicionado 44 minutos depois 2# Dá para agrupar alguns dados com vetores... ajuda é evitar repetição de código e dar um ar mais organizado. Ex.: Código:
  7. @Souza Alexandre, por favor, poste o código completo para analisarmos e também servi de consulta para outros usuários. No aguardo.
  8. @claudiocj, olá. 1# SOBRE A DISTINÇÃO DAS COISAS Citando: Precisamos separar as coisas, veja: - Portugol é uma coisa. - PETEQS é uma outra coisa; - Visualg é ainda uma outra coisa diferente; Poderíamos dizer que o Portugol é um nome dessas pseudo-linguagens que são em português, beleza? No caso, o PETEQS utiliza "uma espécie" desse tal de Portugol. Ela tem uma sintaxe própria! Já o Visualg, é uma "ferramenta de edição e compilação de código". Ela também utiliza um Portugol, mas tem uma SINTAXE TOTALMENTE DIFERENTE. Ou seja, o "Portugol" do Visualg NÃO É IGUAL ao Portugol do PETEQS. Temos ainda um "sistema" chamado Portugol Studio. Este também utiliza o tal do Portugol, só que, advinha? utiliza uma outra sintaxe. etc. Logo: Pode ficar confuso, pois o Visualg já está em um Portugol. RESUMIDAMENTE Não devem-se misturar uma coisa com a outra. Se está estudando PETEQS, tem que fazer o algoritmo nessa pseudo-linguagem. De maneira prática poderíamos dizer algo assim: Ou o código vai ser feito em PETEQS; Ou o código vai ser feito em Visualg; Ou o código vai ser feito em Portugol Studio. Todos 3 são em Portugol, mas cada um com sua sintaxe própria; e que não funcionam entre si... são PSEUDO-LINGUAGENS DISTINTAS. 2# SOBRE A ESTRUTURA DO CÓDIGO BASEADO NO CÓDIGO ORIGINAL ("EM VISUALG") Deu uma reconfigurada no código baseado nas alterações do @devair1010: algoritmo "inverte" var frase :caractere funcao inverte (frase:caractere):caractere var v :inteiro aux :caractere inicio aux <- "" //inicializa a variável v <- compr(frase) //obtém última posição da frase enquanto v > 0 faca aux <- aux + copia(frase;v;1) //vai concatenando letra a letra (da direita para esquerda) v <- v-1 //atualiza para próxima posição fimEnquanto retorne aux //retorna a "frase invertida" na própria função fimFuncao inicio escreva ("Digite uma palavra: ") leia(frase) escreval("Palavra invertida ficou: ",inverte(frase)) fimAlgoritmo Deixei comentários em cada linha para tentar explicar como cada uma está funcionando. 3# SOBRE A FUNÇÃO EM PETEQS x VISUALG Como já citado algumas vezes, ele quer o código em PETEQS. Desta forma, os códigos que foram dados lá no enunciado: Funcionam lá no PETEQS, mas não funcionam em Visualg... Nesse caso, é necessário fazer algumas adaptações. Poderia ficar algo assim: algoritmo "inverte" var frase :caractere funcao inverte(frase:caractere):caractere var aux :caractere i :inteiro inicio aux <- "" //inicializa a variável para i de 1 ate compr(frase) faca aux <- aux + copia(frase;compr(frase)-i+1;1) //vai concatenando letra a letra (da direita para esquerda) fimPara retorne aux //retorna a "frase invertida" na própria função fimFuncao inicio escreval(inverte("exemplo")) escreval(inverte("reviver")) fimAlgoritmo Veja, além de alguns comandos serem diferentes entre Visualg e PETEQS, no Visualg não dar para "acessar as posições das letras na frase", vide.: frase[3] //no PETEQS, essa comando significaria que está acessando a 3 letra da frase, ou seja, o tipo equivalente ao "caractere" no PETEQS funciona como se fosse uma vetor. //Entretanto, isso não funciona no Visualg. Lá não dá para acesasr uma posição específica assim. Desta forma, utilizaram o copia() como alternativa para resolver o problema. Vejam que no código em PETEQS a função inverte vai apenas até a metade do tamanho, pois lá está "invertendo as letras para as posições simétricas". Já no Visualg, como não dá para acessar as posições, foi mais interessante "copiar cada posição de trás para frente". No final, ambos vão trazer o mesmo resultado final (que é a frase invertida), entretanto estão utilizando algoritmo diferentes, ou seja, apesar de aparentar ser igual, está utilizando outra estrutura!!! 4# SOBRE O QUE FALTA FAZER Então, esse código no 3# seria basicamente o código "exemplo" que foi dado no enunciado em PETEQS "convertido" para Visualg. Como quer fazer em Visualg mesmo, agora só resolver o problema em si: obs.: (já ajustei o texto para fazer em Visualg!) Ou seja, vai apagar a função inverte() e vai implementar a função trocaPares(). Na hora de usar, vai usar trocaPares(). *** Qualquer dúvida/crítica/sugestão é só postar. No aguardo.
  9. 1# SOBRE O PROGRAMA QUE VAI "INTERPRETAR O CÓDIGO DO ALGORITMO" Sugiro utilizar o Visualg versão 3.6.0.5. Exemplo de link para download: https://baixe.net/download/4313/visualg/ 2# SOBRE A CRIAÇÃO DA ESTRUTURA BASE DO ALGORITMO A primeira coisa é criar a base do esqueleto do algoritmo para o Visualg. Com o Visualg 3.6.0.5 já instalado e aberto, crie um novo documento. Vá em ARQUIVO/NOVO. Algoritmo "semnome" // Disciplina : [Linguagem e Lógica de Programação] // Professor : Antonio Carlos Nicolodi // Descrição : Aqui você descreve o que o programa faz! (função) // Autor(a) : Nome do(a) aluno(a) // Data atual : 08/11/2018 Var // Seção de Declarações das variáveis Inicio // Seção de Comandos, procedimento, funções, operadores, etc... Fimalgoritmo Eu acho interessante colocar o enunciado do problema no próprio código. Mas isso é facultativo, ex.: algoritmo "Média final de alunos" // Disciplina : XXXXXXXXXXX // Professor : XXXXXXXXXXX // Autor(a) : Souza Alexandre // Data atual : 08/11/2018 // Descrição : //Escreva um algoritmo que leia 250 valores representando a média final dos //alunos de Lógica de Programação e o nome do respectivo aluno, neste trimestre. //Ao final o algoritmo deve imprimir o nome do aluno que teve a maior nota e o //nme do aluno que teve a menor nota. var inicio fimAlgoritmo A partir disso, vai implementando de acordo com o enunciado. 3# SOBRE O DESENVOLVIMENTO EM SI Pronto. Daí, analise e entenda o problema. Antes de começar a programar, é necessário ter em mente qual a proposta do "programa"... será basicamente uma "interpretação de texto". O quê é para ser feito? quais passos devo implementar no algoritmo para satisfazer o que foi pedido? O enunciado meio que já dar um passo-a-passo... Resumidamente você precisará ler um monte de médias de alguma coisa, e um monte de nomes associados, respectivamente, para cada uma dessas médias. Vai identificar qual a maior média dentre as que foram informadas, e após exibe essa maior média e o respectivo nome relacionado a mesma a ela. Tem pelos menos duas formas tradicionais para implementar: ler a média e o nome do aluno. Se essa média for a maior, armazena essa média em uma variável separada e também o nome em outra variável separada. Ao final, essas duas variáveis separadas vão está com os dados que você quer. Só exibi-los ler todos as médias, e todos os nomes, armazenando-os em vetores. Após, analisa as posições do vetor de média uma a uma para encontrar o maior valor. A medida que vai encontrando, vai atualizando as variáveis separadas que contém os dados da "maior média". No final exibe os dados. Ou seja, para o primeiro, a medida que vai lendo os dados, já vai analisando e encontrando os dados do maior. No segundo, primeiro ler todos os dados do aluno, após analisa estes dados que foram lidos. O resultado final será o mesmo. Fazer de uma forma ou outro depende, por exemplo, do que está estudando momento... se já estudou vetores, muito provavelmente deveria ser feito com eles... se não estuou, não tem porque usar algo que ainda não foi proposto. MINHA SUGESTÃO INICIAL Implemente um programa mais simples. Algo como: Leia 5 médias e ao final exiba a maior valor dentre eles. Posta o código completo aqui, e a partir dele damos continuidade posteriomente. *** Qualquer dúvida sobre algo que comentei e/ou sobre o algo do problema é só postar. No aguardo.
  10. Olá @Vengefull. 1# Sugiro evitar esse tipo de escrita utilizando "Letras Maiúsculas No Início De Cada Palavra". Isso dificulta a leitura! Veja a diferença: escreval(" Vamos inserir 36 números qualquer de 1 até 60") 2# Sobre: Para quê está convertendo caractere? não entendi também esse se, ou seja, apenas para a última posição não vai dar espaço? Em fim, por que não fazer assim?: para a de 1 ate 36 faca x:=1 num_inseridos:=num_inseridos+1 repita escreva("Digite o",a,"° número inteiro maior que 0 e menor que 60 (ou digite 60 para sair) ") outra forma seria assim: escreva("Digite o ",a:1,"° número inteiro maior que 0 e menor que 60 (ou digite 60 para sair) ") 3# Ainda sobre: escreva("Digite o ",a:1,"° número inteiro maior que 0 e menor que 60 (ou digite 60 para sair) ") Como usuário (de programa), particularmente não acho interessante a "repetição de ordens" , ou seja, acho cansativo fica vendo "digite isso", "digite aquilo"... sugeriria orientar uma vez só ou até mesmo nem fazer.. apenas deixar implícito o que é para fazer. No caso, deixei as "orientações" acima, veja: escreval(" Vamos inserir 36 números qualquer de 1 até 60") escreval() escreval("Insira os 36 números") escreval("obs.: números inteiros maiores que 0 e menores que 60") escreval() para a de 1 ate 36 faca x:=1 num_inseridos:=num_inseridos+1 repita escreva ("Número ",a:1,":") leia(b) se (b>0) e (b<60) entao para c de 1 ate 36 faca se b=numeros_inseridos[c] entao escreval("Esse número já foi inserido, escolha outro") x:=2 fimse fimpara 4# O Visuagl tem um recurso bem prático para "gerar dados aleatório". Veja um exemplo: repita ALEATORIO -10,80 escreva ("Número ",a:1,":") leia(b) ALEATORIO OFF se (b>0) e (b<60) entao para c de 1 ate 36 faca Basicamente seria que "todo leia() que estive entre o ALEATORIO, será preenchido automaticamente. Os número no lado é a faixa que resolvi deixar, ou seja, gerará aleatoriamente de -10 a 80. *** Por enquanto é isso. Por favor, veja o que acha útil e implementa no código. Aí posta o novo código completo e onde especificamente gostaria de ajuda. No aguardo.
  11. Você está com dúvida em qual parte? Poste o código completo com o exemplo já feito para ter uma base!!!... ou seja, utilizando o inverte(). Essa função já está pronta... é só usar. No caso, se informar exemplo, deverá retornar olpmexe. Depois vemos como ajustar para "troca em pares". No aguardo.
  12. @Maysa Ester, tem algum site e/ou apostila para disponibilizar sobre o PETEQS? não encontrei materiais úteis... No aguardo.
  13. OK. Só lembrando que esses códigos acimas estão para Visualg... PETEQS, supostamente, possui uma sintaxe diferente.
  14. 1# Por favor, poste o texto do código, em vez de uma imagem. 2# Teste com o Visualg 3.6.0.5. Exemplo de link: https://baixe.net/download/4313/visualg/ *** No aguardo.
  15. E para que estaria servindo os read? No caso, seria o mesmo que não usar... algo assim: program jogo; uses CRT; Begin ClrScr; GotoXY(34,17); write('Start Game'); GotoXY(34,20); write('Options'); GotoXY(34,23); write('Quit Game'); readln; end. adicionado 1 minuto depois Uma forma que gosto de usar o GogoXY() seria assim: program jogo; uses CRT; begin ClrScr; GotoXY(34,17); write('Start Game'); GotoXY(34,20); write('Options '); GotoXY(34,23); write('Quit Game '); readln; end.

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

×