From 3de37e56ec21c5e370f23aa27b547de83edebb96 Mon Sep 17 00:00:00 2001 From: Pablo Alcain Date: Tue, 3 Nov 2015 22:08:03 -0300 Subject: [PATCH] Listos ejercicios --- .gitignore | 5 +++++ README.md | 10 ++++++++++ src/add_two.c | 19 +++++++++++++++++++ src/arrays.c | 19 +++++++++++++++++++ 4 files changed, 53 insertions(+) create mode 100644 .gitignore create mode 100644 README.md create mode 100644 src/add_two.c create mode 100644 src/arrays.c diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..cce0aa6 --- /dev/null +++ b/.gitignore @@ -0,0 +1,5 @@ +*.pp.c +*.asm +*.o +*.e +*~ diff --git a/README.md b/README.md new file mode 100644 index 0000000..66287a8 --- /dev/null +++ b/README.md @@ -0,0 +1,10 @@ +# Compiled languages into Python + +En este hands-on vamos a practicar cómo llamar a una librería +nuestra desde python. En la carpeta `src/` tienen dos archivos de C. +Para completar este ejercicio tienen que hacer los siguientes pasos: + +1. Compilar ambos archivos como objetos separados +2. Construir una librería dinámica que tenga ambos objetos +3. Escribir un script en python que pruebe **todas** las funciones +de la librería diff --git a/src/add_two.c b/src/add_two.c new file mode 100644 index 0000000..79c4efc --- /dev/null +++ b/src/add_two.c @@ -0,0 +1,19 @@ +/* file: add_two.c */ + +float add_float(float a, float b) { + return a + b; +} + +int add_int(int a, int b) { + return a + b; +} + +int add_float_ref(float *a, float *b, float *c) { + *c = *a + *b; + return 0; +} + +int add_int_ref(int *a, int *b, int *c) { + *c = *a + *b; + return 0; +} diff --git a/src/arrays.c b/src/arrays.c new file mode 100644 index 0000000..ff38fe8 --- /dev/null +++ b/src/arrays.c @@ -0,0 +1,19 @@ +/* file: arrays.c */ + +int add_int_array(int *a, int *b, int *c, int n) { + int i; + for (i = 0; i < n; i++) { + c[i] = a[i] + b[i]; + } + return 0; +} + +float dot_product(float *a, float *b, int n) { + float res; + int i; + res = 0; + for (i = 0; i < n; i++) { + res = res + a[i] * b[i]; + } + return res; +}