Tema 1 · Introducció a C/C++
Introducció
C és un dels llenguatges més utilitzats en bioinformàtica per la seva eficiència i control a baix nivell. En aquest tema aprendràs a crear el teu primer programa, compilar-lo i executar-lo.
Objectius
- Crear el primer programa en C
- Compilar-lo amb gcc
- Executar-lo des del terminal
Primer programa
#include <stdio.h>
int main() {
printf("Hola Bioinformàtica!\n");
return 0;
}
El viatge complet de la lletra H · De printf("Hello world") a la teva percepció conscient
📋 Resum exprés (10 passos clau)
- Escrius "H" al codi font.
- El compilador la transforma en el número 72 (ASCII).
- El 72 es guarda en binari:
01001000a la memòria. printfrep l'adreça on comença aquest byte.- El sistema operatiu envia el byte al terminal.
- El terminal tradueix 72 → caràcter ‘H’ i demana la seva forma a la font.
- La GPU converteix la forma en una graella de píxels encesos/apagats.
- El monitor il·lumina els subpíxels RGB segons el patró.
- La llum arriba als teus ulls i estimula els fotoreceptors (cons L, M, S).
- El cervell reconstrueix les línies i reconeix la lletra H.
En les seccions següents ho veurem pas a pas i entendràs per què cada transformació és necessària.
1 Fase 1 – Del text al número
Tot comença amb el fitxer de codi font. Per a nosaltres és text, però l'ordinador no pot treballar directament amb lletres.
- Escrivim
printf("Hello world");al fitxerhola.c. - Executem
gcc hola.c -o hola. El compilador llegeix el fitxer i tradueix el codi C a llenguatge màquina.❓ Per què? Perquè el processador només entén instruccions numèriques (codi màquina), no paraules en anglès. - La lletra H es converteix en el número 72 (codi ASCII). ASCII és una taula que assigna un número a cada caràcter.
H → 72 e → 101 l → 108 o → 111 - El número 72 es guarda en binari dins de l'executable:
72 decimal = 0x48 hexadecimal = 01001000 binari
En aquesta fase, la H ha desaparegut. Ara només existeix el valor numèric 72 (bits).
2 Fase 2 – Dins la memòria i la CPU
L'executable es carrega a la memòria RAM. La cadena "Hello world" ocupa una seqüència de bytes consecutius.
- La cadena es copia a la memòria en temps d'execució. Cada byte té una adreça única.
Adreça 1000: 72 (H) Adreça 1001: 101 (e) Adreça 1002: 108 (l) …
- Quan el programa crida
printf, no li passa la frase sencera, sinó l'adreça del primer byte (1000).
printf( adreça 1000 ); - La CPU va a l'adreça 1000, llegeix el byte
01001000(72) i el carrega en un registre intern.❓ Per què?printfno envia caràcters, envia bytes. Com que només coneixem el punt d'inici, la funció va llegint byte a byte fins a trobar el byte 0 (final de cadena).
La CPU ha obtingut el byte 72 des de la memòria. El programa d'usuari ha de demanar al sistema operatiu que l'escrigui al terminal.
3 Fase 3 – Del programa al sistema operatiu i terminal
printfutilitza una crida al sistema (write) per enviar el byte 72 al dispositiu de sortida estàndard (stdout).- El sistema operatiu lliura el byte al controlador del terminal. El terminal rep
01001000. - El terminal consulta la seva taula de caràcters (normalment ASCII o Unicode) i tradueix el número 72 al caràcter 'H'.
❓ Per què? El terminal és un programa que sap dibuixar lletres; per això necessita tornar a convertir el número en una forma visual.
Per primera vegada, el byte 72 s'interpreta com el caràcter 'H'. Però encara no s'ha dibuixat res.
4 Fase 4 – De la font als píxels
- El terminal demana a la font tipogràfica la forma geomètrica de la lletra 'H'. La font descriu la lletra amb corbes i línies (ex.: dues verticals i una horitzontal).
- Rasterització: La forma vectorial es converteix en una graella de píxels. Per a una mida petita podria ser:
1 0 0 0 0 0 1 1 0 0 0 0 0 1 1 1 1 1 1 1 1 1 0 0 0 0 0 1 1 0 0 0 0 0 1
(1 = píxel encès, 0 = apagat) - La GPU (targeta gràfica) rep la graella i actualitza el framebuffer (la memòria de vídeo) amb el color de cada píxel. Per a un text negre sobre fons blanc, emmagatzema:
Píxel(0,0) = negre Píxel(1,0) = blanc … - Què és realment un píxel? Un píxel està format per tres subpíxels: vermell, verd i blau. La GPU envia les intensitats adequades a cada subpíxel (0 = apagat, 255 = màxima llum).
- Milions de transistors microscòpics al panell (LCD/OLED) reben els senyals i obren o tanquen el pas de la llum. Per als píxels negres de la 'H' es bloqueja la llum; per al fons blanc es deixa passar al màxim.
Ara la pantalla mostra un patró físic de llum amb forma d'H, però la teva ment encara no ha interpretat res.
5 Fase 5 – De la llum al cervell
- La llum emesa pels píxels viatja fins als teus ulls. Travessa còrnia, pupil·la i cristal·lí, i es projecta sobre la retina.
- A la retina hi ha milions de fotoreceptors: cons L, M i S (sensibles al vermell, verd i blau) i bastons (llum tènue). Els fotons de la 'H' activen principalment els cons segons el color dels píxels.
- Fototransducció (resum): Dins de cada con, una molècula de retinal canvia de forma en absorbir un fotó (d'11-cis a tot-trans). Això desencadena una cascada química que tanca canals iònics i genera un impuls elèctric.
❓ Per què? El cervell no rep llum, rep impulsos elèctrics. Per això cal convertir l'energia lumínica en senyals nerviosos.
- La informació visual és processada per diverses capes de neurones a la retina (bipolars, ganglionars) i surt cap al cervell pel nervi òptic.
- Al còrtex visual primari, les neurones detecten característiques simples: vores, línies verticals i horitzontals, contrast. En aquest nivell no existeix cap "detector de H".
- Àrees cerebrals superiors combinen aquestes peces: dues línies verticals + una línia horitzontal al mig → activen la representació apresa del símbol H.
- Percepció conscient: Finalment emergeix la experiència subjectiva de veure la lletra H.
La H no existeix físicament a l'ordinador; és una interpretació del cervell a partir d'un patró de llum.
⏳ Línia del temps completa
Per a ments curioses: Com funcionen realment els fotoreceptors
Aquesta secció amplia els passos 17-18 per a qui vulgui entendre la cascada molecular.
Les opsines i el retinal
Cada con conté una proteïna (opsina) diferent: OPN1SW (blau), OPN1MW (verd), OPN1LW (vermell). Totes porten unit el mateix cromòfor: 11-cis-retinal.
- Quan un fotó colpeja el retinal, aquest s'isomeritza a tot-trans-retinal.
- Aquest canvi de forma activa l'opsina, que al seu torn activa una proteïna G (transducina).
- La transducina activa una fosfodiesterasa que degrada GMP cíclic.
- En disminuir el GMPc, es tanquen canals de Na+ i Ca2+ de la membrana.
- La cèl·lula s'hiperpolaritza i allibera menys neurotransmissor, cosa que les cèl·lules bipolars tradueixen en un senyal cap a les ganglionars.
Exemple amb un píxel vermell
Si la pantalla mostra un píxel vermell, els fotons estimularan intensament els cons L, molt poc els M i gens els S. El cervell rep aquesta combinació i interpreta "vermell".
Per a una descripció pas a pas del processament retinià, consulta el material complet original sobre bastons, bipolars i còrtex.
📚 Glossari ràpid
Fi del viatge. Ara, cada cop que vegis una lletra a la pantalla, sabràs els milions de processos que l'han feta possible.
Exercicis
- Canvia el text del
printf()per mostrar el teu nom. -
Cerca la seqüència del gen assignat segons l'ordre alfabètic de la llista següent.
Copia els primers 50 nucleòtids i mostra'ls amb
printf().Assignació de gens:
- ACE
- ACTB
- APOE
- BRAF
- BRCA1
- BRCA2
- CFTR
- EGFR
- F5
- F8
- G6PD
- HBB
- INS
- KRAS
- MTHFR
- MYC
- PTEN
- TNF
- TP53
- VEGFA
On trobar la seqüència: NCBI Gene
Exemple: cerca el gen, accedeix al registre i copia una part de la seqüència nucleotídica per mostrar-la amb
printf(). - Compila sense errors i executa el programa.
Mini Projecte
Crear una fitxa d'una proteïna utilitzant printf(). Mostra el nom, la seqüència i la longitud.