-
Posts
3.940 -
Cadastrado em
Tipo de conteúdo
Artigos
Selos
Livros
Cursos
Análises
Fórum
Tudo que Simon Viegas postou
-
VisualG Programa para armazenar o RG de 100 pessoas
Simon Viegas respondeu ao tópico de anonymouatour em Programação - iniciantes
Olá @anonymouatour. Se você achou um código, você precisa primeiro entendê-lo, para só depois tentar usá-lo. Tem duas opções: 1) entender COMO FUNCIONA a estrutura funcionada, analisar todo o algoritmo e assimilar o seu funcionamento; Nesse caso, você analisaria linha a linha... tentar entender do o processo que foi usado no algoritmo. 2) apenas entender O QUÊ ELE FAZ, ou seja, sem se preocupar com o "como funciona", mas saber o que ele precisa e o que ele está resultando. Por exemplo, COMO funcionar o leia() no VisualAlg? não sei, só sei o QUE ELE FAZ... recebe uma variável e ao final essa variável fica com o "texto" ou "número" que o usuário informou via teclado. *** MINHA SUGESTÃO Analise linha a linha do programa que está na imagem!!!!!! No VisuAlg, vá pressionado F8 e acompanhando o fluxo do algoritmo. Após, adapte o código no seu programa. Veja PRIMEIRO ENTENDA O CÓDIGO, só depois passe para o seu. Caso surja dúvidas, posta aqui que analisamos. -
Função par e impar separadas.
Simon Viegas respondeu ao tópico de Giovane Sornoqui em Programação - iniciantes
Não sei qual a linguagem, mas parece que o operador "%" não aceita float ou bouble, provavelmente deve precisar funcionar com inteiros (int ?). -
VisualG Programa para armazenar o RG de 100 pessoas
Simon Viegas respondeu ao tópico de anonymouatour em Programação - iniciantes
Olá. procedimento PesquisaSequencial() var rg :inteiro i :inteiro elemento:inteiro inicio i<- 1 func[3] <- rg //qual o valor de RG nesse momento??? enquanto (rg <> func[i]) faca i<-i+1 fimEnquanto se (i<=2) então escreva(i) senao escreva("n encontrado o valor") fimse //se você está verificando no ENQUANTO acima, para que esse repita aqui??? repita escreval("buscar elemento") leia(rg) elemento <- rg se(elemento > 0) então escreval("elemento encontrado",elemento) senao escreval("elemento não encontradokkk") fimse ate (elemento = -1) aguardarENTER fimprocedimento Favor responder as perguntas que estão no código. No aguardo. -
Olá @Michel Adão, Infelizmente ninguém pode fazer o trabalho por você. Mas tenho disponibilidade para te ajudar. Te tempos em tempos fico de olho nas notificações... O pontapé inicial também deve ser seu. Observe que o que estou sugerindo é apenas fazer uma parte básica do problema. Faça algo! Poste aqui o que conseguiu fazer e onde está com dúvidas. Obs.: se tiver disponibilidade de tempo, e autorização para desenvolver ai no trabalho (nas horas vagas), tente adiantar algo. No aguardo.
-
Olá @Michel Adão. Inicialmente você pode fazer um programa bem simples... Crie um array de 5 posições (o programa pede 100, mas use 5 para facilitar os testes) do tipo string. Esse array vai armazenar os nomes dos itens. No programa, faça um laço de repetição para ler esses 5 nomes. Após ler os nomes, faça o programa imprimir os 5 nomes na tela. No aguardo.
-
Olá @Michel Adão. Então, a primeira coisa que vocês precisam fazer é modelar a estrutura dos dados... sugiro que façam o seguinte: - crie as variáveis que armazenarão os itens e suas respectivas quantidades; - desenvolta o programa para ler esses dados e posta o código aqui... No aguardo.
-
Olá @Arlindo Santos Sampaio, Para sortear, você pode se aproveitar do Randi(). Para não repetir, vai depender como está estruturado.. Posta aqui o seu seu código para darmos uma analisada. No aguardo.
-
Pascal, tabelas e mostrar resultados
Simon Viegas respondeu ao tópico de Heimar Klaus em Programação - outros
Olá @Heimar Klaus. De certo modo o Java não é tão parecido com Pascal. O Java é Orientado à Objetos, já Pascal é essencialmente orientado à Programação Procedural (apesar de atualmente também ter OO).. mas enfim.. Então, a primeira coisa que vocês precisam fazer é modelar a estrutura dos dados... sugiro que façam o seguinte: - crie as variáveis que armazenarão os itens e suas respectivas quantidades; - desenvolta o programa para ler esses dados. No aguardo. -
Como usar o comando cronômetro no visualg?
Simon Viegas respondeu ao tópico de Kevin Neres em Programação - iniciantes
Olá @Kevin Neres. Você quer fazer um cronômetro rodar e ao mesmo tempo ficar aguardando o usuário teclar, correto? Eu também acho que não dá... ou pelo menos eu não faço ideia de como fazer... mas vá saber! Então, se der para obter o horário do sistema, daria para "armazenar a hora inicial", "aguardar o usuário responder", "ler novamente a hora do sistema" e "calcular se foi em tempo hábil". PS: No Pascal também daria para fazer. Lá, por exemplo, tem uma função que retorna se uma tecla foi pressionada, ou seja, enquanto nenhuma tecla for pressionada ela retornada "false" (que não foi).. daí podendo ir verificando ela e fazendo algo a depender desse valor... -
VisualG Programa para armazenar o RG de 100 pessoas
Simon Viegas respondeu ao tópico de anonymouatour em Programação - iniciantes
Olá @anonymouatour. 1) Para que serve esse para no início? como ele funciona ou deveria funcionar? -
VisualG Programa para armazenar o RG de 100 pessoas
Simon Viegas respondeu ao tópico de anonymouatour em Programação - iniciantes
Olá. No seu código, você está executando a leitura e só depois está exibindo o menu ou tela correspondente... Por exemplo: Veja, o Menu (ou tela) deve vir antes da leitura, ou melhor, a leitura só será feita se for escolhida a opção de adicionar... Abaixo tentei dar uma reorganizada no código, veja: Algoritmo "PROGRAMINHA" //Obs.: Alterado o total de 100 para 3, para assim facilitar os testes! //Após, voltar para 100 (lembrar de ajustar o código para o novo valor). var func :vetor[1..3] de inteiro //armazena os RG dos funcionários total :inteiro //total de funcionários cadatados menu :inteiro //usado no menu principal procedimento aguardarENTER() var aux :caractere //usado para auxiliar para "pausar antes de continuar" inicio escreva ("Pressione ENTER para continuar") leia(aux) //leitura de variável apenas para aproveitar que precisa aguardar um ENTER fimProcedimento procedimento Adicionar() inicio limpaTela se (total<=3) então escreval("ALGORITMO – PROGRAMA RG") escreval("ADICIONAR ELEMENTO") escreva ("RG [",TOTAL,"]:") leia(func[total]) total<-total+1 senao escreval("NÃO PODE MAIS CADASTRAR NENHUM FUNCIONÁRIO!") aguardarENTER fimSe fimProcedimento procedimento Pesquisar() var subMenu :inteiro //usado no menu local inicio limpaTela repita escreval(" ALGORITMO – PROGRAMA RG") escreval("PESQUISAR ELEMENTO") escreval("[1] Pesquisa Sequencial") escreval("[2] Pesquisar Binária") escreval("[0] Voltar") escreval("Opção:") leia(subMenu) escolha subMenu caso 1 PesquisaSequencial() caso 2 escreval("EM CONSTRUÇÃO") {PesquisaBinaria(x,n)} //EM CONSTRUÇÂO fimEscolha ate (subMenu=0) fimProcedimento procedimento PesquisaSequencial() var rg :inteiro i :inteiro inicio escreval("EM CONSTRUÇÃO") aguardarENTER fimProcedimento procedimento Listar var i :inteiro inicio escreval ("LISTAR..........") para i de 1 ate (total-1) faca escreval("Cadastro",i," RG:",func[i]) fimPara aguardarENTER fimProcedimento INICIO total<-1 //inicializa o total de cadastros repita limpaTela escreval("ALGORITOMO CADASTRANDO – PROGRAMA RG") escreval("[1] Adicionar ") escreval("[2] Pesquisar ") escreval("[3] Ordenar (em breve) ") escreval("[4] Remover (em breve) ") escreval("[9] Listar obs.: apenas para teste") escreval("[0] Sair ") escreval("") escreva ("Opção:") leia(menu) escolha menu caso 0 escreval("Desconectado") caso 1 Adicionar() caso 2 Pesquisar() caso 3 {Ordenar()} //em construção caso 4 {Remover()} //em construção caso 9 Listar() //procedimento provisório. Utilizado para testes fimEscolha ate (menu=0) fimAlgoritmo Veja que a ideia é tentar seguir mais ou menos o que está sendo pedido... tentei deixar de uma forma mais simples possível. Minha sugestão é que faça diversos testes, vê se precisa ajustar alguma coisa para o seu gosto, vê se precisa melhor algo e por ai vai... Após, termine de implementar a PesquisaSequencial(). Use seu código como base. Vá fazendo testes e ajustes até o código ficar bom o suficiente para inserir outra coisa (como a PesquisaBinaria). No aguardo. adicionado 8 minutos depois PS: para facilitar os testes, utilize valores simples, como 1, 2 e 3.. ou 111, 222 e 333... o foco inicial é cadastrar qualquer coisa. Quando tiver mais ou menos pronto... testes com outros valores, ex.: 075357643, 5647952156 e 165498236 e vê como se comporta. adicionado 16 minutos depois PS2: Veja que ao escolher o menu 2, do Pesquisar(), o programa vai lá para e começa a executar o que está no procedimento... dentro do Pesquisar(), ao executar o PesquisaSequencial(), o programa vai para lá e começa a executar o que está lá dentro!!! Ao terminar, ou seja, ao executar o fimProcedimento do PesquisaSequencial(), o programa volta exatamente para onde o PesquisaSequencial() foi chamado e executará a próxima instrução, que é ir para o fimEscolha e verificará o ate do repite do Pesquisar()... e assim por diante. Experimente ir pressionando F8 no VisuAlg e ir acompanhando a linha azul no programa. -
VisualG Programa para armazenar o RG de 100 pessoas
Simon Viegas respondeu ao tópico de anonymouatour em Programação - iniciantes
Olá @anonymouatour. Primeiramente, edite sua postagem e deixe o seu código dentro da tag CODE (botão <>). No aguardo. -
Problema com geany windows !
Simon Viegas respondeu ao tópico de Hygor Melo em Programação - iniciantes
Olá @Hygor Melo. Não conheço a plataforma, não faço ideia de como ajudar em relação ao SO e a IDE. mas em relação ao Pascal, tente declarar como WinCRT ou apenas não declarar a unit...(algumas IDE incorporam automaticamente). Outra forma também para tentar seria baixar a unit e carregar manualmente. De qualquer forma, boa sorte. -
VisualG Vetores - números repetidos - visualg
Simon Viegas respondeu ao tópico de ET Bilu em Programação - iniciantes
Olá @ET Bilu, Poste o que já conseguiu fazer. Faça pelo menos a parte que ler os dados... No aguardo. -
VisualG Programa para armazenar o RG de 100 pessoas
Simon Viegas respondeu ao tópico de anonymouatour em Programação - iniciantes
Olá. Você pode colocar o menu dentro da opção na CASO ou lá dentro do procedimento. -
Laço de repetição (while...do)onde ele não pare para receber uma tecla
Simon Viegas respondeu ao tópico de njr em Programação - outros
Olá @Vida louca 1123. Seja bem vindo ao Fórum do Clube do Hardware. Então, eu não entendi o que você você quis dizer, a frese ficou incompleta. Se estiver se referindo a algo como "o que é o cont?", esse "cont" nada mais é que uma variável comum, como qualquer outra. Ela foi definida como sendo do tipo interger, ou seja, estruturada para receber números inteiro. No código, a variável é inicializada com "0" e a cada loop é acrescentado em 1 ao seu valor anterior. Devido a essa característica que o programador definiu, ela acabará como se comportando como um "contador" e como lá também está escrevendo esse valor num writeln, esse valor também será exibido na tela. RESUMINDO: A variável cont está sendo usada como um "contatador". Tanto que a nomenclatura dela foi definida como cont, o que faz uma alusão a sua função exercida. *** Segue outro exemplo: Outro exemplo com Data e Hora. Por ai vai. No aguardo. -
VisualG Programa para armazenar o RG de 100 pessoas
Simon Viegas respondeu ao tópico de anonymouatour em Programação - iniciantes
Olá @anonymouatour. Está quase lá, mas ainda não está como solicitado. Falta corrigir a lista dos menus, veja que nem a opção "0" está listada no seu código... e fazer alguns testes também. RESUMINDO: Baseando lá na postagem: - Refaça o menu de opções principal (o seu está incompleto) e faça o menu do PESQUISAR e menu do ORDENAR, que ainda não existem; - Altere o total de cadastros possível de 100 para 5 (no vetor e no código) e faça testes tentado cadastrar mais de 5. (dica para agilizar: tente com dados 11, 22, 33 etc, tanto para o nome tanto para o RG); - Insira o método de ordenação Bubblesort; - Insira o método de pesquisa Binário; - Vá fazendo outros ajustes que achar necessário. *** No aguardo. -
Problema com repeat e if e else
Simon Viegas respondeu ao tópico de Augusto G rocha em Programação - outros
Olá @Augusto G rocha. 1) Leitura dos dados Acho que seria mais prático ler a quantidade logo após ler o código... ou seja, em um único for... pois assim fica mais fácil para correlacionar um coisa com a outra. 2) Busca de código de produto Perceba que um código só será inexistente após verificar todos! No seu código, você está informando que não existe para cada tentativa sem sucesso. Para corrigir, você poderia usar uma FLAG para verificar se foi encontrado ou não... por exemplo, antes do for, essa flag teria um valor indicando que não foi encontrado, daí, dentro do if, no caso como sendo encontrado, essa flag passaria a ter um valor indicando que foi encontrado!. Dessa forma, ao final do for, verifica o valor da flag... Abaixo um exemplo: obs.: sugiro que tente fazer antes sozinho, caso tenha dificuldade, consultar esse modelo e adequar a sua necessidade. 3) Condição para encerramento Você poderia inserir um estrutura de seleção (if) logo após ler o código cliente, se o código for diferente de "0", faz a parte que continua o programa. Ai vê se utiliza um else ou não (será facultativo, pois como o if não será executado, irá direto para logo após esse if, que nesse contexto, iria para o until, que por sua vez iria "aceitar o fim do repeat") .. *** No aguardo. -
Por favor, poste aqui seu código para darmos uma analisada e também poder servi de base para outros visitantes. Obs.: chegou a fazer com record? caso não, e queira implementar, é só avisar! No aguardo.
-
VisualG Programa para armazenar o RG de 100 pessoas
Simon Viegas respondeu ao tópico de anonymouatour em Programação - iniciantes
Olá @anonymouatour, Sugiro o seguinte: remova o item BUSCAR e siga as orientação contidas lá nas "minhas sugestões". No aguardo. -
VisualG Programa para armazenar o RG de 100 pessoas
Simon Viegas respondeu ao tópico de anonymouatour em Programação - iniciantes
Olá @anonymouatour. Abaixo, dei uma reorganizada no seu código. Minhas sugestões: 1) Insira o procedimento para LISTAR. Esse procedimento apenas irá mostrar o RG e NOME de todos os cadastros. Ele vai servi para testar se os dados estão sendo cadastrados ou não. Insira essa opção como 9, lá no menu principal; Vai ficar assim: 2) Após ADICIONAR, e LISTAR estarem funcionando como deseja, teste a função Pesquisar. Lembrando que caso não encontre o cadastro desejado, deverá exibir uma informação, algo como "Cadastro não encontrado"; O menu do Pesquisar ficará mais ou menos assim: Essa pesquisa sequencial é a que você já fez... está quase pronto!! (antes você precisar revisar o ADICIONAR e LISTAR, após revisa essa pesquisa sequencial. 3) Implemente um dos métodos de ordenação, sugiro o BubbleSort primeiro. No aguardo. -
Olá @chissico, ainda precisa de ajuda? No aguardo.
-
Vamos lá: Você tem 2 vetores. Um para cada atributo (nome e nota) do aluno. Então, o mais sensato é correlacionar as posições, ou seja, para um mesmo valor de posição, teremos um dados para um mesmo aluno. Resumindo: a nota final do aluno que o nome está em nome na posição i, vai ter sua nota nesta mesma posição i lá em Nota. Logo poderia ser algo do tipo: for O:=1 to 10 do begin Writeln('Digite a nota final do aluno',Nome[O]); Readln(Nota[O]); end; Obs.: Como padronização, utilize apenas a variável i como controle. A variável pode ser reutilizada sem problemas, pois ela não serve para armazenar dados, mas sim de "auxiliar para percorrer o vetor". PS: Veja, no seu contexto, os array servem para facilitar a leitura de vários dados de alunos diferentes. Já para "um aluno mesmo ter mais de uma dado", ai você pode entrar no conceito de "registros", que no Pascal fica como "record". Por enquanto faça assim com 2 vetores, depois, se quiser, explicamos como fazer com um record (combinado com um vetor). No aguardo
-
Estrutura condicional if dentro de if
Simon Viegas respondeu ao tópico de Thetheu Diias em Programação - outros
Olá @Thetheu Diias. Não tem mistério... Talvez não seja preciso, mas vou tentar falar um pouco antes sobre o tema... Então, os if no Pascal funcionam como "estruturas de seleção", ou seja, servem para "selecionar" se determinado trecho do código deve ser executado ou não... O que será "selecionado" é a próxima estrutura depois do then. Ou vai ser "uma" instrução, ou vai ser um bloco de instruções (begin/end). Mas como assim? no Pascal, as instruções (cada linha do programa*) são executados sequencialmente da "esquerda para direita, de cima para baixa". Exatamente da mesma forma que nós brasileiros lemos um texto. Daí, a depender da sua necessidade, será preciso organizar esse sequência de passos para que alcance um objetivo desejado... Só que ocorre que a depender de condições, o código pode seguir um caminho diferente.. daí surge esses if para "verificar a(s) condições(s) e determinar qual "rota" o código deve seguir nesse momento. ... Em relação aos if dentro de if vai funcionar assim mais ou menos assim: Vou usar de um exemplo: - Crie um programa que verifique se determinada pessoa deverá se alistar no exercito ou não. Program Ex01; var sexo :char; idade:integer; BEGIN writeln('Qual o sexo da pessoa [m] ou [f]'); readln(sexo); writeln('Qual o idade da pessoa') readln(idade); if (sexo='m') then if (idade>=18) then //esse condição só será verificada se a anterior for verdadeira writeln('Ele é do sexo maisculino e tem mais de 18 anos, DEVE SE ALISTAR'); if (sexo='f') then writeln('é mulher! Tá liberado'); End. Veja que apesar de parecer que no if do temos "duas linhas", na verdade só temos "uma", pois a terceira linha está "dentro" do if acima, ou seja, está "amarrado a segunda linha". Mas se eu precisar inserir mais linhas dentro do primeiro if do sexo, e que não esteja dentro do if da idade, vai um exemplo: Program Ex01; var sexo :char; idade:integer; BEGIN writeln('Qual o sexo da pessoa [m] ou [f]'); readln(sexo); writeln('Qual o idade da pessoa'); readln(idade); if (sexo='m') then begin //begin logo após o then writeln('beleza, temos um homem aqui!'); writeln('...'); //eu posso colocar quantas linhas eu quiser dentro desse begin/end if (idade>=18) then //esse condição só será verificada se a anterior for verdadeira writeln('Ele é do sexo maisculino e tem mais de 18 anos, DEVE SE ALISTAR'); writeln('Dados dele'); writeln('SEXO :',sexo); writeln('IDADE:',idade); end; //end após o que está dentro dele if (sexo='f') then writeln('é mulher! Tá liberado'); End. Veja que apenas coloquei um begin/end após o if do sexo e inserir o que precisava dentro dele. O que também incluiu um if. Não existe qualquer relação entre uma coisa e outra... trata-se apenas se "um controle de fluxo ", ou seja, que instrução vai ser executada ou não a depender da condição... o programa não sabe que eu estou relacionado o sexo e idade, isso é uma abstração do programador!!! Você pode colocar o que quiser dentro desse if (ou em qualquer parte do código)... Poderia colocar mais 3 ifs, colocar laços de repetição, leitura de dados etc... sem problemas! Entenda que os if servem apenas para deslocar o fluxo padrão da sequência. Assim como verá que os laços de repetição servirá para "reposicionar a ordem", ou seja, fazer que a ordem volte para determinada posição do código, dando o efeito de "loop" (repetição).. esse loop também será sempre condicionado a uma condição, assim como o if. Os if servem para "eu executo o que está dentro de mim ou não?. Os laços de repetições serviram para "eu executo mais uma vez o que está dentro de mim ou não?" Se um está dentro do outro ou não, não importa!!! Como disse, essa combinação quem faz é o programador, de forma que se comporte da maneira desejada. *** Se tiver fazendo algum exercício, poste aqui e mostre onde está com dúvidas. No aguardo. -
Olá @Augusto G rocha. O tipo char só aceita um caractere. Para o seu contexto, você poderia usar o string, que aceita de 0 a 255 caracteres. PS: na último Writeln() você deve remover aquela "vírgula" e "aspas simples" do final... pois está dando erro de sintaxe... PS2: no caso seriam duas "aspas simples", assim como você colocou na última linha, mas de qualquer forma não tem necessidade. PS3: resumindo: remova as aspas simples do início e sua vírgula, assim como a vírgula a aspas simples do final. (não precisa começar com textos, nem muito menos terminar com texto... pode usar variável de boa) 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