-
Posts
3.940 -
Cadastrado em
Tipo de conteúdo
Artigos
Selos
Livros
Cursos
Análises
Fórum
Tudo que Simon Viegas postou
-
Portugol ler arquivo como entrada e trabalhar com conteúdo
Simon Viegas respondeu ao tópico de Pereimes em Programação - iniciantes
Olá @nbah07 . Que dá, dá, mas não sei se vai ser eficiente... Então, do pouco que sei e conseguir achar sobre arquivos no VisuAlg, ao associar um arquivo ao programa, a cada leia() que o VisuAlg encontrar, ele vai ler uma linha desse arquivo e jogar na variável que está no leia(), ou seja, enquanto não chegar ao fim do arquivo, todo leia() vai está direcionado ao arquivo... entende? não seria possível ler algum dado do usuário via teclado enquanto o arquivo não terminar. Veja, isso é o que eu encontrei até o momento... qualquer coisa dá uma pesquisada também e aguarda outros usuários mais experientes no tema. De certo modo eu não achei muita coisa, usei esse algoritmo como base de análise: algoritmo "lendo do arquivo" arquivo "teste.txt" var x,y: inteiro inicio para x de 1 ate 5 faca leia (y) fimpara fimalgoritmo Fonte: Apoio Informática Como cheguei a essa conclusão: Peguei um arquivo de texto qualquer, e deixei como "teste.txt" na pasta do VisuAlg... simplesmente o programa leu as 5 primeiras linhas e finalizou... então, deduzi que o VisuAlg simplesmente faz o leia() apontar o arquivo!!! (obs.: em outras linguagem, como Pascal, é possível dizer para onde o leia() iria apontar, ou seja, se para o arquivo ou para o teclado... no VisuAlg não sei fazer isso) Daí, tentei usar outro leia() com outra variável para ver se apontava pro teclado, mas ele continuou a ler do arquivo.... resolvi fazer um teste para ler mais vezes do que existia linhas no arquivo... conclusão: leu todas a linhas, e após passou a ler do teclado! RESUMINDO: - ao ler uma linha do arquivo, o VisuAlg já imprime a linha na tela (como se existisse um escreve(y)). Isso é ruim, pois polui o programa; Caso não quiser que aparece na tela, após ler, dá um limpaTela. - para o seu contexto, você poderia preparar o arquivo e algoritmo para trabalhar com um tamanho específico. ou seja, fazer o programa ler de uma vez todas a linhas necessárias... como se fosse um loading de dados... ex.: Cidades.txt Nesse caso temos 5 cidades, num total de 10 linhas. Daí no algoritmo leria alternadamente a cidade e sua população... Fiz um exemplo: Nesse caso, criei um vetor para cidades e outro para a população... Como fiz ler todas as linhas, o leia() ficou liberado para seu uso convencional... Por enquanto é isso... tente ver o que foi útil e vá desenvolvendo a sua própria lógica.. No aguardo. adicionado 7 minutos depois ADENDO: Seria possível também inserir o tamanho do arquivo no próprio texto, por exemplo na primeira linha.... algo assim: No aguardo. -
Olá @Lex Martins. São duas etapas diferentes. Uma é de programar em VisuAlg, outra é criar um algoritmo para calcular uma sequência Fibonacci... O primeiro está relacionado a "Técnicas de programação" (que são "universais"), assim como a assimilação de sintaxe da linguagem em si, ou seja, das regras, recursos e limitações que a linguagem do VisuAlg possui. Já a sequência de Fibonacci é um conceito, que na matemática seria uma sequência bem especial... Até Disney já tratou, inclusive de forma bem interessante: Tente fazer programas mais simples... pegue exemplos de exercícios na internet. Assim como dê uma estudada sobre a sequência de Fibonacci... após, junte uma coisa na outra, ou seja, fazer o algoritmo em VisuAlg que gere determinada sequência finita...
-
Portugol - Visualg como usar repetição com se e vetores?
Simon Viegas respondeu ao tópico de Renan MB em Programação - iniciantes
@devair1010, essa falta do [i ] ocorre justamente por quê o código não foi inserido na tag CODE. A página entende esse comando como "itálico". Por isso solicitei que repostasse o código já no item 1 do meu comentário anterior. @Renan MB, estamos no aguardo. -
Conversão Linguagem C+ para Portugol (Visualg)
Simon Viegas respondeu ao tópico de Fernando Ferreira C em Programação - iniciantes
Olá @Fernando Ferreira C. 1) CONCEITO DE MENU Pode usar um laço de repetição, ex.: repita escreval("**************** BANCO CRIS S.A ****************") escreval("=============================================== ") escreval escreval("ESCOLHA UMA OPÇÃO ABAIXO: ") escreval escreval escreval("=============================") escreval("| *** MENU PRINCIPAL *** = ") escreval("-----------------------------") escreval("(1) - CADASTRO = ") escreval("-----------------------------") escreval("(2) - DEPOSITO = ") escreval("-----------------------------") escreval("(3) - SACAR = ") escreval("-----------------------------") escreval("(4) - CONSULTA SALDO = ") escreval("-----------------------------") escreval("(5) - TRANSFERENCIA = ") escreval("-----------------------------") escreval("(6) - FINANCIAMENTO = ") escreval("-----------------------------") escreval("(7) - SAIR DO SISTEMA = ") escreval("-----------------------------") escreval escreva ("DIGITE A SUA OPCAO: ") leia(opcao) ate opcao="7" A mesma lógica vale para qualquer parte do algoritmo, só se atentando para não usar a mesma variável de controle em "menu" dentro de "menu", ou seja, se um tiver dentro do outro, cada menu deverá ter sua variável de verificação diferente. 2) ENCERRAMENTO DE PROGRAMA Isso já está embutido no menu... ou seja, ao selecionar a opção 7, o menu não vai mais repetir... 3) PRÉ-CADASTRO Ai não sei... poderia sobrescrever o cadastro ou ficar com 2, ou seja, o pré-cadastrado e o novo novo. *** No aguardo. -
Prezados, Para postar códigos no Fórum, é necessário utilizar a tag CODE (botão <>). Favor analisar tópico em destaque: adicionado 5 minutos depois Obs.: para melhor organização, já editei as postagem anteriores.
-
Olá @João Gabriel112. Por favor, edite sua postagem e apague o código do texto e insira novamente dentro da tag CODE (botão <>). Mais sobre o tema aqui: No aguardo.
-
Olá @Leo Tiso . A primeira coisa a se fazer é entender o problema... você já sabe o quê se deve fazer? O como fazer é uma consequência... A partir do momento que já entendeu o quê se pede, tente vislumbrar o algoritmo. Para facilitar, tente imaginar um problema mais simples, mas que é semelhante, ex.: "Dada uma matriz X, de ordem 4x4, determine a matriz Y como sendo a cópia da matriz X. Exiba X e Y." Tente fazer um algoritmo para satisfazer o enunciado acima. Perceba que a diferença é que não haverá permutação entre linhas... Após fazer, posta aqui o código e onde está com dúvidas. Depois de "pronto", tente inserir "o ponto central do seu problema", que é incluir a permuta! No aguardo. adicionado 1 minuto depois ADENDO: Antes de postar um código aqui no Fórum, favor verificar link abaixo:
-
Como calcular usando cont e enquanto?
Simon Viegas respondeu ao tópico de Matheus André em Programação - iniciantes
Fez o que? ...ao fazer o testes pressionando F8, vá verificado o valor de cada variável no lado direito do VisuAlg... veja como estão se comportando as variáveis NUM e CONT a cada vez que pressionar o F8. Se estão com o valor que deveriam ficar... tente entender o que está acontecendo e o que pode ser feito para corrigir. -
Portugol - Visualg como usar repetição com se e vetores?
Simon Viegas respondeu ao tópico de Renan MB em Programação - iniciantes
Olá @Renan MB. 1) COMO POSTAR UM CÓDIGO Por favor, ao postar um código, favor utilizar a tag CODE (botão <>). Seu código foi postagem inicialmente sem essa tag, por favor, edite sua postagem apagando o código atual e insira novamente usando a tag. 2) VALOR DA PASSAGEM Ai vai depender de como você quer implementar esse recurso. Por exemplo, assim como tem uma tabela de poltronas, você também poderia inserir uma tabela de preço por cidades, ai cobrava o valor desejado.... A depender do requisito também, "receber" o valor pago e calcular o troco... tudo inicialmente depende de como quer fazer... 3) POLTRONAS EM ÔNIBUS Posso está enganado, mas existe meio que um padrão de numeração que indica que os números ímpares ficam na janela, e os pares no corredor. Talvez não seja "sempre", mas é bem comum seguirem essa padrão.. Poderia também exibir a poltrona na horizontal (talvez não precise se preocupar em tentar fazer isso agora, só é um sugestão mesmo), ex.: Outro ponto que acharia interessante é SEMPRE exibir o "desenho" das poltronas ocupadas e disponíveis.. Dando um efeito de como sempre ficasse disponível (após limpar a tela, teria logo que reimprimir). Mas ai depende do requisito também, se é solicitado como um menu, deixe como está... 4) OUTROS CONTROLES Assim como é verificado se a poltrona está disponível, seria interessante também verificar se a poltrona informada é válida, ou seja, está entre 1 a 48 (inclusos). Quando o valor estiver fora dessa faixa, deveria ser ignorado. *** Por ai vai. No aguardo. -
Como calcular usando cont e enquanto?
Simon Viegas respondeu ao tópico de Matheus André em Programação - iniciantes
Olá. @Matheus André, por favor, edite sua postagem acima removendo o código e inserindo novamente dentro da tag CODE (botão <>). Sobre: adicionado 13 minutos depois Sobre o código em si, experimente diminuir o número de passos, ou seja, por exemplo calcular só até x+5. Faça testes de mesa calculando no papel e tente entender como funciona cada passo do cálculo. Faça testes usando o próprio VisuAlg para entender como ele está funcionando no momento e o que precisa ser alterado... Dica: vá pressionado F8 e acompanhando os valores das variáveis no lado direito do VisuAlg.. No aguardo. -
Virtual G retornando valores de equações 10 vezes maiores .
Simon Viegas respondeu ao tópico de lucasn1 em Programação - iniciantes
Olá @lucasn1. Né x10 rapaz, é o "O" da frase seguinte, rs. De qualquer forma, use escreval (com L no final) em vez de escreva. PS: para que serve esse trecho? No aguardo. -
Algoritmo acertos mega sena
Simon Viegas respondeu ao tópico de Vinícius Theófilo em Programação - iniciantes
Tente logo fazer essa primeira parte, pois pode ser útil para o seu problema em si... Ai posta aqui para analisarmos... No aguardo. -
aulas de programação
Simon Viegas respondeu ao tópico de douglas siqueira coutinho em Programação - iniciantes
Tem esse curso do Prof. Guanabara também: https://www.cursoemvideo.com/course/curso-de-algoritmos/ -
Algoritmo acertos mega sena
Simon Viegas respondeu ao tópico de Vinícius Theófilo em Programação - iniciantes
@Vinícius Theófilo , show de bola...!!! Caso queira aprimorar o código, estaremos a disposição. Abaixo fiz umas modificações para demonstrar que é possível fazer o sorteio automático. Veja: algoritmo "Mega sena" // Função: Programa que ganhadores da mega-sena (ou algo do tipo) // Autor : Vinícius Theófilo // Agradecimentos: "devair1010" e "Simon Viegas" (Clube do Hardware) // Data : 14/05/2017 Versão atual: 17/05/2017 // Seção de Declarações var RE, AP :vetor[1..6] DE inteiro cont :inteiro i, j :inteiro inicio // Seção de Comandos cont <- 0 escreval(" ACERTOS MEGA-SENA 1.0") escreval ALEATORIO 1,60 //insere números aleatorios no "leia" escreval("Numeros soteados (ENTER para cada número):") para i de 1 ate 6 faca leia(RE[i]) fimpara escreval ALEATORIO OFF //fim do trecho aleatório escreval("Numeros da aposta (ENTER para cada número):") para j de 1 ate 6 faca leia(AP[j]) fimpara escreval para i de 1 ate 6 faca para j de 1 ate 6 faca se RE[i] = AP[j] ENTÃO cont := cont + 1 fimse fimpara fimpara escreva ("O resultado do concurso é: ") para i de 1 ate 6 faca escreva(RE[i]) fimpara escreval escreva ("O total de acertos foi de: ",cont) fimalgoritmo Se for o caso, minhas sugestões iniciais: - além de exibir o resultado, também exibir o número jogado embaixo, para facilitar a comparação e ver os números de acertos; - fazer o controle, via laço de repetição, para só aceitar números entre 1 e 60, ou seja, se digitar números fora dessa faixa, solicitar novamente - etc EXTRA (incluir em programa novo, pois extrapola o enunciado... seria como "treinamento/experiência") - fazer o programa aceitar mais de uma aposta; (usar matrizes, ou seja, vetor com duas posições, um para o número da aposta, outro para os números dessa aposta [1..100,1..6]); - com o recurso de aleatório, da para preencher as após que o usuário solicitar e/ou as que sobrarem, ou seja, se o cara pedir para "jogar pela maquininha", você gera os 6 números para ele... para ajudar nos testes, o programa poderia gerar após os que sobrarem, tipo, só fizerem 3 apostas (ex.: digitou 0 para finalizar), ai o programa geraria as 97 que sobraram e vê quantos números cada aposta fez... poderia por exemplo só exibir o número das apostas que acertam 4, 5 ou 6 (o número da aposta está na primeira coordenada do vetor). - para teste de acerto, poderia usar uma faixa menor de números, por exemplo, de 30 a 50, ou seja, limitando a 20 o número de possibilidades para cada número (já que a chance de acertar as 6, com 1 a 60, é de mais de 1 em 56 milhões, logo, quase sempre não vai acertar nenhum!!!) - etc No aguardo. -
Algoritmo acertos mega sena
Simon Viegas respondeu ao tópico de Vinícius Theófilo em Programação - iniciantes
Só complementando... Nesse código você estará comparando apenas com a com a posição i+1 pra frente para cada i em j, ou seja, para a primeira posição em RE, será comparado em AP[2], AP[3] etc... Em i=2, irá de AP[3] em diante!! Logo, deixando de verificar os valores anteriores, por exemplo, RE[3] com AP[1], AP[2] e AP[3]... por ai vai. Essa sua lógica funcionaria se fosse uma comparação com o próprio vetor, ou seja, RE com RE ou AP com AP, pois evitaria que se comparasse posições iguais (ex.: AP[2] com AP[2], já que SEMPRE seria igual) e nem compararia posições repetidas (ex.: AP[2] com AP[4] e AP[4] com AP[2], como seria o mesmo vetor, acaba sendo a mesma coisa. Obs.: sem o "+1", também compararia duas vezes a mesma posição, ex.: AP[i ] com AP[j] e AP[j] com A[i ]), já que no irá de "posição atual" com "próxima posição" em diante... Já no código de @devair1010, ele vai comparar "todas as posições de RE, com cada posição de AP, já que são vetores diferentes. (e o contexto exige se seja comparados todas as posições) -
Olá @jeffrey donovan Por favor, edite sua postagem, remova a parte que tem o código e insira novamente utilizando a tag code. Mais informações: No aguardo.
-
Dois exercícios de porcentagem mas com formas diferentes
Simon Viegas respondeu ao tópico de Lucas Rocha Santos em Programação - iniciantes
Olá. Esse 1 = 100%, ou seja, salario será igual a ele mais mais 12%... em outras palavras salario será 112% dele mesmo. adicionado 1 minuto depois a segunda linha é o mesmo que: sal_novo <- sal_atual + sal_atual * 0.50 Ou seja, 100%+50% -
resolver algumas questões
Simon Viegas respondeu ao tópico de Gabriel Tannouri em Programação - outros
Olá @Gabriel Tannouri, escolha uma dos problemas e tente fazer... posta aqui o seu código e onde está com dúvidas. No aguardo. -
Resolvendo um exercício de Lógica de Programação
Simon Viegas respondeu ao tópico de Lucas Rocha Santos em Programação - iniciantes
Qua a sua dúvida em relação ao código dele? PS: no código dele tem um pequeno erro de lógica, pois para os ate estão utilizando a mesma lógica, já para Bonificação o "acima" não inclui 1200, mas já para alimentação, o "acima" está incluindo o 600, ou seja, são dois pesos e duas medidas... não pode! a mesma lógica tem que valer para ambos os casos -
algoritmo habitantes de uma vila
Simon Viegas respondeu ao tópico de Vinícius Theófilo em Programação - iniciantes
Só complementando: De um modo geral, os cálculos de média devem ficar fora do laço de repetição, pois senão, toda ver que cair naquela estrutura de seleção a conta será feita novamente (sem necessidade) porcentmulher <- (contmulher300 * 100) / contmulher Ainda sobre os cálculos... sempre que tiver uma divisão, é necessário protegê-la com verificação se o denominador é diferente de 0. (para ser mais direto.. experimente digitar 0 logo no início do programa e tente inserir o sexo diferente de "M" e "F". No aguardo. -
Portugol - Problema ao ordenar vetor
Simon Viegas respondeu ao tópico de neo8 em Programação - iniciantes
Olá a todos.. Algumas considerações: 1) AJUSTAR O QUE DEVE SER AJUSTADO Acho que não seria bem assim... o vetor é de 15 posições, não 16. O problema de "tentar acessar a 16º posição está na lógica utilizada, e não no vetor em si, ou seja, o que precisaria ser verificado é a codificação da lógica, não o vetor (que "necessariamente" deverá ter 15 posições). Se tá indo ao 16, verifiquem onde está acontecendo isso e por qual motivo... ai tenta ajustar. 2) FAZER O QUE DEVE SER FEITO Em outras palavras: "seguir o enunciado". Esse contexto é análogo ao primeiro, ou seja, se a codificação do algoritmo (de ordenação) não está funcionando, o que deve ser revisado é código, e não apenas substituí-lo... :). Ou a implementação está errada, ou o enunciado é inválido... Então, existem N métodos de ordenações já prontos, como visto aqui. Entretanto, o enunciado é bem específico no qual o seu programa deverá funcionar. Logo, o programa necessariamente (dessa vez sem aspas) deverá ser feito assim... o "patrão mandou, nós obedecemos", entendem? Ou seja: ou o código vai funcionar assim! ou vai ficar assim e informado que não funciona ao solicitante. Obs.: claro que num mundo real, não é apenas "ah! pediu assim, então vou fazer". Após análise e experiência do programador, poderá ser discutido o requisito!!! Revisem o que está sendo pedido... tentem entender o seu funcionamento... No aguardo. -
Algoritmo Vetor 50 posições - codigo 0,1 e 2
Simon Viegas respondeu ao tópico de Vinícius Theófilo em Programação - iniciantes
Olá @Vinícius Theófilo. Então, creio que primeiro ler o código, depois faz o que se pede... Acho que seria algo assim: ler o código; se código diferente de 0 ler o vetor; se código igual a 1 faz o que se tem que fazer senao se codigo igual a 2 faz o que se tem que fazer senao informa que o codigo está errado Obs.: Para os teste (ou mesmo no programa final), o VisuAlg disponibiliza um recurso que gera os dados automaticamente, ex.: aleatorio ON para i de 1 ate 50 faca Escreval ("Digite um número inteiro para a posição ", i, " do vetor A") Leia (A[i]) fimpara aleatorio OFF Ou seja, os comandos Leia() que tiveram entre o ON e OFF serão "digitados" automaticamente. No aguardo. -
Resolvendo um exercício de Lógica de Programação
Simon Viegas respondeu ao tópico de Lucas Rocha Santos em Programação - iniciantes
Olá @Lucas Rocha Santos. O arquivo anexo não está acessível... ai não deu para comparar... Mas o seu código me pareceu incompleto... experimente fazer "testes de mesa". Para alguns caso também está exibindo 2 respostas... obs.: perceba que são duas verificações distintas..um para o BONIFICAÇÃO, outro para AUXÍLIO ALIMENTAÇÃO. Sugiro primeiro tentar fazer separadamente... após pronto, tentar juntar uma coisa na outra. No aguardo.
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