-
Posts
3.940 -
Cadastrado em
Tipo de conteúdo
Artigos
Selos
Livros
Cursos
Análises
Fórum
Tudo que Simon Viegas postou
-
Olá @Keven Augusto. Seja bem vindo ao Clube do Hardware. Que eu saiba não... e pelo que eu saiba também, nem é possível gerar um executável em VisuAlg, ou seja, só poderá usar o algoritmo executando pelo próprio programa do VisuAlg. Isso pode ser feito utilizando FUNÇÕES e PROCEDIMENTOS... eles funcionam como subprogramas. Tem seu próprio escopo de variáveis (pode ter variáveis locais), a diferença que o código estará no próprio arquivo. Usar um código externo acho que não tem como. Em outras linguagem semelhantes, como o Pascal, tem essa possibilidade. Esses códigos externos são chamados de UNIT. Entretanto, na prática também será como o mesmo arquivo!!!, ou seja, a UNIT é "linkada" na compilação com o programa principal (o arquivo fica maior)... a vantagem da unit estaria basicamente na reutilização, podendo assim ser utilizada em outros programas sem precisar "copiar e colar o texto do código". Ainda no Pascal, talvez seja possível acessar um .EXE passando parâmetros e recolhendo uma resposta... mas acho que seria pouco viável... RESUMINDO: - No VisuAlg acho que não tem como usar arquivos distintos; e a linguagem é cheia de bugs. - No VisuAlg acho que não gera executável... não teria como "entregar um programa ao cliente"; - O VisuAlg não trabalha muito bem com arquivos, ou seja, fica complicado para "persistir os dados"... praticamente todo dado que é inserido no programa é perdido após finalizar. Na prática, o VisuAlg é uma péssima escolha para esse contexto. No aguardo.
-
Visualg validar campo inteiro
Simon Viegas respondeu ao tópico de ivan p. rodrigues em Programação - iniciantes
Olá @ivan p. rodrigues. Depende do contexto... talvez uma forma seja inicializando com um valor específico... funcionando como uma flag. Ex.: valor <- -1 Isso supondo que -1 não seja um valor usado no contexto... ou seja, se valor tiver um dado diferente de -1, então ele foi alterado. obs.: da mesmo forma, poderia usar o 0 como referência, ou seja, se assim como "" é "não alterar para caractere", 0 também será para inteiro. (são respectivamente os valores padrões)... lembrando que comparação de números não usa aspas. No aguado. -
Algoritmo fazer incremento e decremento
Simon Viegas respondeu ao tópico de Rodrigo2018 em Programação - iniciantes
Olá @Bruno Miller. Você está retornando o valor de resultado na próprio função, ok. Mas qual o valor que resultado terá nesses momentos? ou seja, o que essa função deveria fazer, e o que ela está fazendo... está dando a resposta esperada? Já testou as funções? Está funcionando? Por favor, poste o código completo de como está testando e onde está com dúvidas. No aguardo. -
Algoritmo fazer incremento e decremento
Simon Viegas respondeu ao tópico de Rodrigo2018 em Programação - iniciantes
Olá @Bruno Miller. O código de @Tio dri já demonstra um uso funções: Algoritmo "incremento" var n,res:real funcao incremento (x: real):real var resultado:real inicio resultado<-x+1 retorne resultado fimFuncao inicio escreva ("Digite o número para incremento:") leia (n) res <- incremento(n) escreval ("O Resultado do incremento é:", res) fimalgoritmo As funções são como subprogramas. Podemos dizer que são procedimentos que retornam valores neles mesmo... ou seja, sempre algo será retornado na própria função, como se fosse ao mesmo tempo uma variável. Basicamente ficam declaradas entre o VAR e o INICIO (principal). Nesse caso, está recebendo um valor real, via parâmetro, e está retornando outro valor real, na própria função (o valor que está no retorne) Pesquise um pouco sobre funções em VisuAlg, tente entender o seu funcionamento e sua sintaxe. Analise esse código já postado e tente fazer algo para o seu contexto... Ai posta o código aqui e em qual parte está com dúvidas. No aguardo. -
Algoritmo fazer incremento e decremento
Simon Viegas respondeu ao tópico de Rodrigo2018 em Programação - iniciantes
@Tio dri, você apenas postou um código... por favor, edite a postagem e insira comentários para contextualizá-lo? @kevenlucas, a orientação é que você mesmo faça seus códigos... Em qual parte está com dúvidas? -
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 adicionado 9 minutos depois @BinhoRDS, por favor, poste que já conseguiu fazer e onde está com dúvidas. No aguardo.
-
Algoritmo fazer incremento e decremento
Simon Viegas respondeu ao tópico de Rodrigo2018 em Programação - iniciantes
Olá @Tio dri, Por favor crie uma nova postagem... para evitar quebrar a linha de raciocínio do @Rodrigo2018. Mesmo que seja o mesmo código, acho melhor que cada um tenha o seu tópico e evolua de acordo com seu ritmo. obs.: tente fazer algo, e poste também o que já conseguiu fazer e onde está com dúvidas. No aguardo. -
Olá @anonymouatour. Como citado: Abaixo tentei reorganizar e deixei alguns comentários: algoritmo "questão concurso" declare X[10], n, i, aux, flag numérico //declara as variáves //ESTRUTURA PARA LEITURA DE DADOS VIA USUÁRIO para i<-1 até 10 faça //para ler um números via teclado de cada posição do vetor leia(X[i]) //ESTRUTURA QUE ORDENARÁ O VETOR EM ORDEM DECRESCENTE n<-1 //inicializa o contador que controla a posição do vetor flag<-1 //inicializa marcando como "houve troca" enquanto (n <= 10 E flag = 1) faca //enquanto não for o fim do vetor e houve troacas inicio flag<-0 //marca como "não houve troca" (veja, se não houver permancerá com esse valor, se houver, será marcado baixo) para i<-1 ate 9 faca //da primeira até a penultima posição (já que a penultima compara com a última) inicio se (X[i] < X[i+1]) então //se posição atual é MENOR que a posição posterior inicio //faz a permuta deles flag<-1 //marca como "houve troca" aux<-X[i] X[i]<-X[i+1] X[i+1]<-aux fim_se fim_para n<-n+1 //atualiza o contador que controla a posição do vetor fim_enquanto //ESTRUTURA PARA EXIBIR O RESULTADO para i<-1 até 10 faca //para exibir cada posição do vetor ordenado escreva(X[i]) fim_algoritmo Resumindo: É uma espécie de Bubble Sort (otimizada), que ordenará o vetor em ordem DECRESCENTE. (1-ler os números para preencher o vetor. 2-ordena o vetor em ordem decrescente 3-exibe o vetor ordenado) Código em VisuAlg algoritmo "questão concurso" var X :vetor [1..10] de inteiro //declara as variáves n, i, aux, flag :inteiro INICIO ALEATORIO ON //comando para gerar números automaticamente (para ler pelo teclado, remova essa linha e a outra mais abaixo) para i de 1 ate 10 faca leia(X[i]) fimPara ALEATORIO OFF n<-1 flag<-1 enquanto (n<=10) E (flag=1) faca flag<-0 para i de 1 ate 9 faca se (X[i] < X[i+1]) então flag<-1 aux<-X[i] X[i]<-X[i+1] X[i+1]<-aux fimSe fimPara n<-n+1 fimEnquanto para i de 1 ate 10 faca //para exibir cada posição do vetor ordenado escreva(X[i]) fimPara fimAlgoritmo PS: download do VisuAlg: http://antonionicolodi.blogspot.com.br/2015/06/visualg-30-revisao-4-em-25062015.html No aguardo.
-
Algoritmo fazer incremento e decremento
Simon Viegas respondeu ao tópico de Rodrigo2018 em Programação - iniciantes
Olá @silvaojunior2017. Ele só deu um "exemplo" qualquer de como poderia ser implementado uma função em VisuAlg. -
Tem como liga dois monitores VGA, um na placa de video outra na onboard ?
Simon Viegas respondeu ao tópico de Frab em Monitores de vídeo
Por favor, após testar, dê um retorno informando se conseguiu ou não. No aguardo. -
Já eu não entendi a sua dúvida. Não entendeu o quê? Agora você voltou a retornar um texto, no item 2 ele pede um VALOR!
-
Percebi que modificou o código, tirando o retorno de texto, pelo resultado da função abs(). Falta só corrigir o valor da condição, pois ele pede que verifique o argumento, mas você está usando um valor fixo.
-
Sim o que? Releia as instruções com mais calma... é necessário interpretar o que está sendo pedido... lá no item 2. tá bem claro: SE. No 3. tem "CASO CONTRÁRIO", ou seja, IF e ELSE. No seu código: Logo após iniciar a função, você já está "imprimindo" algo... veja, ele requer no enunciado uma CONDIÇÃO. Se xxxxx faça wwwwww, caso contrário faça zzzzzzzz. No próprio enunciado ele diz como verificar o que esta querendo...
-
@Kimo Gordinho a instrução está na própria imagem na parte de "? Dica".
-
e aí, conseguiu? posta o código aqui aqui para darmos uma analisada. No aguardo.
-
Não funciono como? o que aconteceu? Então uma das etapas para solucionar um problema é entender qual o problema... no seu caso, ele quer que retorne uma resposta de acordo com um valor de parâmetro que foi enviado em s. Outro passo, que é inerente ao problema, é que você precisa ter uma base em técnicas de programação e sobre a linguagem em questão, ou seja, sobre Python. O importante é técnica de programação... ela independe da linguagem. Ao entrar em "funções", subentende-se que já deveria ter uma bagagem anterior, entende? Sugiro que assista algumas videoaulas sobre o tema. Abaixo cito um exemplo. Mas vamos lá, para seu problema, 98,674% já estava pronto, faltando apenas "usar" o que foi retornado.. Ex.: def shut_down(s): #declara assinatra da função e seu parâmetro if s=="yes": #faz uma comparação do conteúdo do s com o que está entre "" return "Desligando" #retorna o que esta depois do return elif s=="no": #faz uma comparação do conteúdo do s com o que está entre "" return ("Desligamento abortado") #retorna o que esta depois do return else: #caso os ifs anterios não seja verdadeiros return ("Desculpe") #retorna o que esta depois do return #abaixo, cada linha, vai chamar a função shut_down, passando um valor, e o print vai imprimir a resposta que veio da função print(shut_down("yes")) print(shut_down("no")) print(shut_down("Bora Bahêa")) Tentei deixar uns comentários em cada linha, explicando mais ou menos o que cada uma tá fazendo.. Vou tentar descrever... seria o seguinte... primeiramente foi declarado uma função, ou seja, um "comando" que "faz algo e retorna um valor nele mesmo"... lá no "def" e o que está relacionado a ele. Essa função está recebendo um valor, em s, e seleciona o que irá retornar (na própria função, ou seja, pelo return... a função seria como um "comando" e ao mesmo tempo "uma variável", entende?). Daí, o que fazer com essa função? se ela foi criada, teoricamente precisa ser usada! Ai tem que ver o seu contexto.. de como está sendo pedido... O que precisa entender é que "a função recebe um texto, e retorna outro" e fim!... a forma que vai utilizar isso, depende do seu contexto. Por exemplo, poderia ser algo assim: - declara a função (tem que ser antes, para deixar disponível para uso); - ler do teclado a resposta via teclado (algo como respondendo uma pergunta, algo como "Deseja desligar o equipamento? yes/no"); - ai chama a função usando a resposta, algo como "shut_down(resp)". - Como a função apenas devolve uma resposta, é necessário verificar o que se quer fazer com ela, que no caso é imprimir na tela. Algo como "print(shut_down(resp))"... As possibilidades são infinitas... depende do requisito (que está sendo pedido) e da criatividade/experiência... poderia ser algo como: textoFinal=shut_down(resp) print(textoFinal) Dá uma revisada, qualquer coisa posta em qual parte não está entendendo. No aguardo. PS: Exemplo de mini-aulas.
-
Olá @Kimo Gordinho. Então, eu não programo em Python, mas acho que um dos problemas é que você já está retornando um valor logo após iniciar a função, ou seja, deve tá finalizando a função logo após começar... tire essa segunda linha... Em relação ao if/elseif... dê uma olhada na suas sintaxes... você está usando como se "yes" fosse uma função, em vez de ser uma "valor". Veja, você recebe um valor s, daí o código deverá "selecionar" (estrutura de seleção if) qual caminho irá seguir, ou seja, qual valor irá retornar... superficialmente falando, acho que seria algo assim: (um chute, já que eu não conheço a linguagem) def shut_down(s): if s=="yes": return ("Desligando") elif s=="No": return ("Desligamento abortado") else: return ("Desculpe") No aguardo.
-
Olá. Em qual parte está com dúvidas? Esse código foi você quem fez ou está tentando entender um código de outra pessoa??? Então, não consegui compreender as suas explicações... tanto esse, tanto o texto inicial estão um pouco confusos para mim.. Por favor, tente descrever de uma forma mais clara e menos coloquial. (tente usar um linguagem mais formal) Mas então, vamos lá: 1) POSTAGEM DE CÓDIGOS NO FÓRUM Para analisarmos um código, é necessário que a sua estrutura de indentação (espaçamento horizontal) esteja intacta, ou seja, seu código está apenas uma linha em baixo da outra. Além disso, está faltando algumas partes, como as coordenadas do X em alguns trechos. Por favor, edite sua postagem, apague seu código e poste novamente utilizando a tag CODE. Veja o link: 2) ESTRUTURA DE ORDENAÇÃO De fato o código está meio que utilizando a base do Bubble Sort... mas talvez precise de alguns ajustes. Então, como já comentei, eu não consegui entender muito bem o que quis dizer, mas poderíamos dizer ele não é um algoritmo de trocas em si... ele está mais para um algoritmo de ordenação... trocas é apenas uma consequência dessa operação de ordenar... entende? E creio que ele está sim ordenando (em ordem decrescente)... talvez precise apenas de pequenos ajustes, ou seja, a base dele se assemelha ao Bubble Sort, mas precisa dar uma otimizada. *** No aguardo.
-
Olá @lucashp São substituídas por que está utilizando as mesmas posições. Veja: Ou seja, sempre está armazenando nas posições de 1 a 4. Se você declarou de 1 a 8, por que não está utilizando as outras posições? Antes mesmo de começar a escrever o algoritmo, é necessário já ter mais ou menos em mente como será feito o armazenamento e também a recuperação dos dados, ou seja, primeiro vem as ideias, depois a implementação. (obs.: sei que na prática isso é difícil, pois tendemos a tentar fazer as duas coisas ao mesmo tempo.. normal. Tem que ir praticando) Como é sabido, existem diversas formas de resolver o mesmo problema... você estará apenas desenvolvendo UMA... Vamos pegar a sua estrutura: Você declarou uma variável para os nomes, e outra para as notas. Ok. Mas como fazer a relação de uma coisa com a outra? entende? Teoricamente, talvez você tenha pensado em algo assim: Daí, precisaria correlacionar, vou tentar demonstrar uma forma de raciocínio: - É notável que a variação é sempre de 4 em 4. Até ai ok. O Aluno 1 vai até 4, aluno 2 até 8, aluno 3 vai até 12, então posso usar o valor de "4" como base, e "X" como referência ao aluno... beleza. Então, 4*X. - Para Aluno 1, 1*4 = 4. Para aluno 2, 2*4 = 8.... mas vixe! A nota começa com 1, não com 4. Então posso diminuir 3. Então, para aluno 1, 1*4-3=1, para aluno 2, 2*4-3=5. Por enquanto estaríamos com algo assim: (x*4-3) - Certo, mas são 4 notas. Nesse caso podemos usar o Y como referência (1 a 4). Então: (x*4-3 + y) Aluno 1, nota 1... 1*4-3 + 1 = 2... não deu certo, pois deu 2, deveria dar um... simples, subtraio 1. Ex.: x*4-3+y-1. Ou simplesmente x*4-4+y. Vamos testar: Aluno 3, nota 2. 3*4-4+2=10. OK. Deu certo! Fórmula geral x*NUMERO_DE_NOTAS-NUMERO_DE_NOTAS+y. Use: ((x*4-4)+y) //o parênteses não é necessário, apenas usei para separar os elementos Pronto, casa aluno ficará com sua nota. *** Uma segunda forma, um pouco mais simples e mais elegante, seria utilizando uma matriz para notas. Ex.: Nomes :vetor [1..2] de caracter Notas :vetor [1..2,1..4] de real //"código do aluno","número da nota desse aluno" Simples assim. Nome do Aluno 4? Nomes[4]. Nota 3 do Aluno 4? Notas[4,3]! *** Outra forma de utilizar seria como sugeriu @devair1010. Apenas faria uma ressalva para utilizar outro nome para o vetor, como por exemplo "alunos [1..2,1..5] de caracter". É meio que uma mistura dos 2 exemplos que dei acima... onde a primeira coordenada valera para cada Aluno, e a segunda coordenada, a posição 1 vai para o nome, e as 4 restantes vão para as notas, ou seja, a relação das notas para o aluno está em "NUMERO_DA_NOTA+1" (pois começa com 2). *** obs.: outras coisas precisam ser revistas, como o cálculo da média, que NÃO deveria ficar dentro do para... deve ficar depois. No aguardo.
-
visualg vetores
Simon Viegas respondeu ao tópico de GABRIEL PAUZT GONÇALVES em Programação - iniciantes
Pronto... a parte do VisuAlg já vemos que está bem encaminhada, agora falta você "entender mais a fundo o problema, e tentar achar uma solução para ele". Tente por exemplo imaginar que você que tivesse que fazer isso de cabeça... como você faria? Tendo você com uma lista, por exemplo de 20 nomes, como faria para identificar os repetidos como é pedido? Aí, tente entender os passos que você está usando e traduza para um algoritmo.. Então: antes você precisa saber o que você quer fazer. Depois vem a parte como fazer no VisuAlg. A parte da leitura e exibição dos nomes está ok. Vamos analisar essa parte: se v[indice] = v[indice] ENTÃO cont:=cont+1 fimse Temos: v[] - é a forma de acessar uma posição do vetor; indice - é variável numérica que será usada para acessar uma posição de v; Qual o valor de indice no momento que está executando esse se? Veja que logo antes do se tem um para que usou esse indice, logo, indice estará com o último valor do para, ou seja, indice vai está com o valor 4. Logo, seria o mesmo que: se v[4] = v[4] ENTÃO cont:=cont+1 fimse Algo como: "se 'o nome que está na posição 4 do vetor' é igual ao 'o nome que está na posição 4 do vetor' então" Ou seja, SEMPRE SERÁ IGUAL. Pois "X" sempre será igual a "X", logo, cont será igual a "o valor que tem em cont, que é 0, mais 1", logo, cont=1. Entende? o VisuAlg simplesmente vai executar o que você determinar... A parte de ter uma base da estrutura do VisuAlg está ok. Ela ajuda a criatividade... falta agora ter a lógica e após tentar traduzir. No aguardo. -
visualg vetores
Simon Viegas respondeu ao tópico de GABRIEL PAUZT GONÇALVES em Programação - iniciantes
Olá @GABRIEL PAUZT GONÇALVES. Não aceita, ou não está aceitando? são coisas diferentes. Resumidamente: sim, o VisuAlg aceita caracteres em vetores.... para o contexto, declare com o tipo caractere. O programa "simples" que me referi, foi utilizando vetor mesmo... apenas que não precisaria se preocupar, por enquanto, se é repetido ou não. Algo como preencher um vetor com 5 nomes e após exibir esses 5 nomes. Dê uma pesquisada sobre vetores em VisuAlg. Tente fazer algo, poste o código que conseguiu fazer e onde está com dúvidas. No aguardo. -
visualg vetores
Simon Viegas respondeu ao tópico de GABRIEL PAUZT GONÇALVES em Programação - iniciantes
Olá @GABRIEL PAUZT GONÇALVES. Seja bem vindo ao Fórum do Clube do Hardware. Poste o código que já conseguiu fazer e onde está com dúvidas... Sugestão: tente fazer primeiro um programa mais simples... que leias os nomes e exibas todos, sem se preocupar se são repetidos ou não. Mais pra frente insere em "módulo" no programa. No aguardo. -
Olá @danilo001. Qual o compilador que você usa? Então, como recomendação, de fato é necessário inicializar o N, mas no Pascal, ao iniciar o programa, todas as variáveis globais são zeradas automaticamente, ou seja, número fica com 0, letra fica '', caractere fica com ' '... etc. Outro ponto é que, como o laço de repetição é fixo, melhor utilizar o for, no lugar do while. Para esse código em si, não faz o menor sentido querer repetir... a resposta é fixa!!! Aproveitando esse exemplo de @devair1010, lembrar que é recomendado verificar tanto minúsculo, quanto MAIÚSCULO, pois "s" e "S" não tratados de forma diferente no Pascal, ou seja, o until precisa de 2 condições para esse caso. Outra forma é usar o UpCase(), que retorna o valor do caractere em maiúsculo... ela pertence a unit CRT (ou WinCRT). obs.: alguns compiladores já carregam essa unit ("biblioteca de comandos/estruturas/funções etc") automaticamente. É a mesma unit que disponibiliza o ReadKey, TextColor, ClrScr, Delay, etc Exemplo de estrutura base: Program Exercico_28; uses CRT; var somatorio :word; i :byte; tecla :char; //poderia ser "resp", "resposta", "opcao"... etc BEGIN repeat TextColor(WHITE); //cor do texto branco mais claro. (TextColor(numero). Cada número = uma cor. White=15, Yellow=14 etc) ClrScr; //limpa a tela somatorio:=0; //inicializa a variável write ('Deseja sair do programa ?'); TextColor(6); writeln('(S/N)'); TextColor(15); tecla:=UpCase(ReadKey); until tecla='S'; END. Veja que nesse caso, necessariamente precisa inicializar a variável do somatório, pois a partir do segundo loop, ela continuaria com o valor antigo. No aguardo.
-
Exibir tabuadas... Fica travado
Simon Viegas respondeu ao tópico de danilo001 em Programação - outros
Olá. Bacana... mas tem alguns pontos que podem melhorar.. - Como os laços repetições são fixos (de 1 a 20 e 1 a 10), melhor usar para, em vez de while; - Você não precisa armazenar o resultado da conta, a conta pode ser feita diretamente no writeln; No aguardo. -
Exibir tabuadas... Fica travado
Simon Viegas respondeu ao tópico de danilo001 em Programação - outros
Olá @danilo001. Nesse trecho, você usa T como parâmetro para o while, mas o seu valor está fixo.. ou seja, o valor de T não está sendo alterando no while, logo ficará num loop infinito... Ficará sempre calculando R=T*I, logo R=1*1, R=1... resumindo: ficará infinitamente atribuindo 1 a R. 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