Ir ao conteúdo
  • Cadastre-se

Ater

Membro Júnior
  • Posts

    11
  • Cadastrado em

  • Última visita

Reputação

4
  1. Olá, eu estou com a ideia de uma aplicação e não sei o que eu preciso saber para implementá-la. Não é nada muito grande. Vou tentar dar uma descrição: O problema consiste em criar uma extensão para Firefox, onde essa extensão salva os nomes e as imagens thumbnails de videos de playlists do youtube em um arquivo ou em algum outro lugar, na mesma ordem em que aparecem na playlist. Esse programa tem duas operações apenas: 1. uma funcionalidade que salva todos os nomes e as thumbnails de uma playlist quando o usuário quiser (clicando em um botão ou algo do tipo); e 2. salvar automaticamente o nome e a thumbnail sempre que um novo video é adicionado a uma playlist. O programa vai fazer isso com mais de uma playlist. Não sei o grau de dificuldade desse problema, afinal nem tenho experiência com programação além de sisteminhas CRUD em Java que tenho feito recentemente para aprender. Porém, eu até tenho a lógica para escrever o programa, mas não sei quais API's, linguagens ou outras tecnologias que vou precisar aprender para fazer essa tarefa. Eu sei que a Google oferece uma API de dados para o Youtube que pode ajudar, mas ainda não fui muito atrás de saber como se adquire essa API e nem como se usa (estou ocupado com outras tarefas no momento). A aplicação surge da necessidade de saber quais são os vídeos que o Youtube remove das minhas playlists. Se alguém tiver outra solução, estarei feliz em ler. Só preciso saber o caminho das pedras. Meu conhecimento atual consiste em Java, C e SQL. Seria bom se eu pudesse fazer isso só em Java, mas estou disposto a aprender outra linguagem se necessário.
  2. Ater

    C O que esse código faz?

    @arfneto Eu imaginei que fosse, por que, aos meus olhos de principiante, o código parecia uma só definição matemática usada para encontrar o enésimo termo da sequência. Mas eu não esperava chamar as funções desse jeito implicasse na perda de desempenho, isso foi um aprendizado novo. O que mais estou gostando na programação atualmente são problemas de computação, como os problemas do Caixeiro Viajante, Josephus, Torre de Hanói et cetera. Mas ainda me falta um bom conhecimento para me meter com isso. Enfim, segue a minha resolução. #include <stdio.h> int main () { int fib1 = 0, fib2 = 1; int fib = 0, cont = 0; int n; scanf ("%d", &n); for (int i = 0; i < i + 1; i++) { for (int j = fib1 + 1; j < fib2; j++) { cont++; if (cont == n) { printf ("%d\n", j); return 0; } } fib = fib1 + fib2; fib1 = fib2; fib2 = fib; } } Amanhã vou usar o seu algoritmo para comparar com as outras duas funções. Obrigado por tudo, aprendi mais sobre complexidade.
  3. Ater

    C O que esse código faz?

    @arfneto Olá. Desculpe o sumiço, necessitei ficar ausente por alguns dias. Rapaz, achei muito interessante o seu código. É visível a diferença de processamento de um para o outro já na comparação do código-fonte. O mais legal é que você conseguiu deduzir a definição de fibonot, que foi algo que eu tentei bastante mas não consegui. O máximo em que consegui chegar, foi em duas funções recursivas onde uma hora o termo n pode ser definido por f(n) = f(n-1) + 1 e em outra hora é f(n) = f(n-1) + 2. E eu nem sei se está certo, já que não testei ou provei. Mas mesmo assim, funções recursivas são custosas demais em questão de processamento (constatei isso fazendo fibonacci por recursão e outro por laço). O que eu provavelmente faria, antes de ver sua resolução, seria algo como: Acha um numero fibonacci N. Incrementa uma var. contadora até encontrar N-1. Provavelmente seria bem ineficiente. Sua resolução é bem profissional.
  4. Ater

    C O que esse código faz?

    @arfneto Muito obrigado, sua resposta foi mais que satisfatória. Como pôde ver, eu ainda não sei diferenciar um código eficiente de um não eficiente, hehe. No estudo da programação, ainda estou na parte da lógica, mas estou pegando um livro de Arquitetura e Estrutura de Dados e logo vou entender mais sobre complexidade de algoritmos. Porém esse código em questão, certamente é melhor do que eu estava pensando em fazer. Eu pensei nisso logo após ter criado este tópico. Contar quantos elementos existem entre um termo N e N + 1 da série de fibbonacci: que resultaria no enésimo termo de fibonot. Mas quando pensei nisso já estava exausto e decidi deixar pra outra hora. Incrível como tem vezes que a solução mais simples está bem na nossa frente mas acabamos recorrendo a resoluções mais ineficazes (bem, ao menos é o que acontece comigo de vez em quando).
  5. Ater

    C O que esse código faz?

    Olá. Venho pedir ajuda para entender a lógica de um código que, aparentemente, é um pouco avançado para mim. Mas, contextualizando, tem um problema no uri que eu tentei resolver alguns meses atrás e não consegui. Voltei a tentar resolver ontem, mas ainda não consegui. É um problema que simplesmente me dá uma exaustão mental muito grande, embora eu consiga montar uma estrutura lógica de resolução na minha cabeça, ela ainda não fica muito clara. Para quem quiser tentar, o problema é este: https://www.urionlinejudge.com.br/judge/pt/problems/view/2846 Então eu fui atrás de uma resposta na internet o seguinte código: #include <stdio.h> #include <math.h> #include <stdbool.h> bool Square(long long int x){ long long int s; s = sqrt(x); return (s * s == x); } bool isFib(long long int c){ return (Square(5 * c * c + 4) || Square(5 * c * c - 4)) ; } int main(){ long long int a, i, cont = 0; long long int res; scanf("%lld",&a); for(i = 4; cont != a ; i++){ if(!isFib(i)){ cont++; res = i; } } printf("%lld\n",res); return 0; } Autor: https://github.com/MN4R4/URI/blob/master/Fibonot.c Eu achei esse código muito eficiente, diferente do que eu estava fazendo, que era criar um vetor de fibonnaci até um termo N e criar outro vetor para receber os números não existentes nesse vetor. Eu não entendi a lógica do código, então peço ajuda de vocês para me explicar. De quebra, poderiam me dizer o "caminho das pedras" para aprender a escrever um código tão eficiente e enxuto assim? Tem um estudo específico para isso ou é só programar mesmo até a barba bater no peito?
  6. @KXSY Certo, acho que o problema está praticamente resolvido. As dependências eu já tinha instalado, pois o tutorial que usei de instalação do allegro pelo pacote "liballegro5-dev", já considerava elas. Então fui atrás de outros códigos para testar, e usando a diretiva que você passou, "-lallegro", consegui compilar alguns códigos. Ao meu ver, o problema estava na linkagem mesmo, pois eu não estava sabendo fazer referência às bibliotecas. Por exemplo, eu estava tentando compilar um source exemplo do allegro chamado "ex_blend_target.c", fazendo referencia a todos os headers com -l e ainda dava problema. Mas esse caso é exceção, o resto compilou e executou corretamente. Você não sabe como me ajudou. Acho que eu fiquei mais de um dia inteiro nisso já, fui atrás até da documentação do gcc e acabei lendo sobre a opção -l, mas não entendi como era pra usar. Na verdade, o que eu estava tentando fazer era dar -L ou -I (i maiúsculo) seguido do endereço dos headers do allegro, mas dava no mesmo. O problema foi a minha burrice com o Linux mesmo, eu já imaginava que o problema era simples. O melhor é que eu não vou ter que voltar pro Windows. Enfim, tem mais alguma dica pra um iniciante Linux como eu? O livro que você indicou eu já vou devorar nestas férias. Ainda mais agora que quero começar a usar Manjaro, espero não ter este mesmo problema novamente. Muito obrigado, ajudou muito.
  7. @KXSY Eu já havia tentando isso também, mas sem sucesso. Continua dando "referência não definida". Aliás, eu nem ao menos sei se consegui instalar direito, eu não entendo muito de compilar codigo-fonte. Apenas sigo o passo-a-passo da documentação, mas ainda assim tem chance de dar errado, sabe-se lá por que. Embora eu também tenha instalado pelo terminal através de um "apt-get install liballego5-dev". De qualquer forma, já decidi que vou iniciar o meu projeto no Windows mesmo, é um pouco mais fácil, ao menos por enquanto. Estava olhando o livro aqui, é exatamente o que eu estava procurando. Não encontrei um bibliografia muito boa de Linux. Lerei sim, com certeza, obrigado.
  8. Olá a todos. Primeiramente, não sei se este é o local certo para essa dúvida. Desculpem qualquer coisa. Estou tendo dificuldades para compilar codigos-fonte que necessitam da biblioteca Allegro. Provavelmente isso se deve a falta de experiência com sistemas Linux (uso Debian a 6 meses). Já foi um parto para mim conseguir instalar a API, mas agora o problema é saber referenciar os arquivos cabeçalho. Até agora, eu só estive compilando a partir do comando "gcc arquivo.c -o arquivo". Porém, ao que me parece, o comando para compilar referenciando a allegro é outra, pois o compilador reclama dizendo que não encontrou a referência das funções. Semelhante a quando você usa "math.h" sem o parâmetro "-lm" na linha de comando. Alguém sabe como resolve isso? Já olhei a documentação, tanto da Allegro quanto do GCC, mas até agora nada.
  9. @KXSY , de fato, fiz isso no dev e também deu certo. Cheguei a pensar nessa hipótese, porém como o arquivo main reconhecia o .h, mesmo sem abrir um projeto, eu descartei. De qualquer forma, obrigado.
  10. @isrnick , joguei tudo no dev c++ e o problema persistiu. Supondo que você testou o código, eu deduzi que o problema poderia não ser no código. Então eu fui em um compilador online e o código funcionou! Parece que o problema é o IDE então. O que é uma pena, pois gosto do Dev e o Code Blocks não funciona direito na minha máquina. Vou tentar instalar outro compilador para fazer o teste. adicionado 38 minutos depois @isrnick Usei o Code Blocks e deu certo. Parece que o problema era o IDE mesmo. Obrigado pela sugestão.
  11. Olá a todos. Sou novo na programação e, embora esteja pegando bem os conceitos e a lógica, tem um problema que não estou encontrando solução. Estou tentando criar minha primeira biblioteca (arquivo header), mas estou tendo um problema quanto a compilação dos arquivos. Estou usando 3 arquivos, um com a função main ( .c), outro com os protótipos das funções da biblioteca ( .h) e um último com o corpo das funções ( .c). Acontece que quando eu faço o arquivo .h com cabeçalho e corpo das funções, o código compila e executa normalmente. Quando eu tiro o corpo das funções do .h, deixando somente os protótipos, e passo o corpo pra outro aquivo .c, o código não compila e muito menos dá erro de sintaxe. A seguir, o arquivo main.c #include <stdio.h> #include <stdlib.h> #include "calculos.h" int main(){ printf("Usando headers\n"); int y = 5; int quad = quadrado(y); int cub = cubo(y); printf("Quadrado de %d: %d\n", y, quad); printf("Cubo de %d: %d\n", y, cub); return 0; } Essa é a biblioteca somente com o protótipo das funções (calculos.h): int quadrado(int x); int cubo(int x); E este último arquivo, é o corpo das funções (calculos.c): #include "calculos.h" int quadrado(int x){ return x*x; } int cubo(int x){ return x*x*x; } Quando eu mando compilar o arquivo main, nada acontece, muito menos o executável é criado. Porém, quando eu apago o arquivo calculos.c, e deixo as funções do header completas, o código compila e executa. Alguém tem ideia do que pode ser?

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

×
×
  • Criar novo...