Skip to content

This repository has the aim to provide an easy example of integrating two programming languages (C and Python)

Notifications You must be signed in to change notification settings

Fernanda-Kipper/integration-c-python

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Conjectura de Collatz 📊

Esse projeto tem o objetivo de mostrar ao usuário o gráfico gerado apartir da Conjectura de Collatz que é calculado através do número inicial fornecido pelo usuário.

Integração C & Python

  • Na linguagem C, criamos a função na qual é calculado os valores da conjectura a partir do número inicial
  • Esse código foi exportado como uma library com extensão .so e para gerar o arquivo .so utilizamos o próprio GCC
  • Já em Python, usamos a biblioteca ctypes para auxiliar na importação da biblioteca em C e uso de suas funções
  • no arquivo plot.py chamamos a função calculate que retorna um ponteiro para inteiro indicando a primeira posição do array que contém o tamanho total do array, e assim podemos saber em python o quanto devemos percorrer esse ponteiro para obter todos os números gerados
  • Também no arquivo plot.py usamos a lib matplotlib para realizar o plot dos dados em um gráfico, o eixo X corresponde a contagem de números gerados e o eixo Y corresponde aos números gerados propriarmente.
  • Por fim, chamamos a função freeArray exportada pela lib em C para liberar esse espaço de memória após seu uso, passando como parâmetro o ponteiro inicial.

Como rodar

Pré requisitos:

  • GCC instalado
  • GNU Make instalado (normalmente ele acompanha na instalação do GCC)
  • Python >= 2.7
  • PIP >= 22.0

Executando

// na pasta do projeto
pip install ctypes
pip install matplotlib

make

python plot.py

Colaboradores 🤝

Foto da Fernanda Kipper Github
Fernanda Kipper
Foto do Vinicius Perruzi
Vinicius Perruzi

About

This repository has the aim to provide an easy example of integrating two programming languages (C and Python)

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •