C/C++
Tema 3 · Condicionals, bucles, funcions
Introducció
Els programes han de prendre decisions i repetir accions. Amb condicionals (if, else, switch) controlem el flux segons condicions.
Els bucles (for, while) ens permeten repetir instruccions.
Les funcions agrupen codi reutilitzable, fent el programa més llegible i modular.
Objectius
- Utilitzar
if/elseiswitchper prendre decisions - Repetir tasques amb
foriwhile - Crear funcions amb paràmetres i valor de retorn
- Calcular la composició nucleotídica d'una seqüència d'ADN
Condicionals i bucles
Exemple amb if/else per classificar una base nitrogenada:
#include <stdio.h>
int main() {
char base;
printf("Base (A, C, G, T): ");
scanf(" %c", &base);
if (base == 'A' || base == 'a')
printf("És Adenina\n");
else if (base == 'C' || base == 'c')
printf("És Citosina\n");
else if (base == 'G' || base == 'g')
printf("És Guanina\n");
else if (base == 'T' || base == 't')
printf("És Timina\n");
else
printf("Base no vàlida\n");
return 0;
}
Observa l'ús de
|| (OR) per acceptar majúscules i minúscules
Ara comptem quantes bases hi ha en una seqüència usant un bucle for:
#include <stdio.h>
#include <string.h>
int main() {
char adn[] = "AGCTTAGGCTA";
int i, a = 0, c = 0, g = 0, t = 0;
for (i = 0; i < strlen(adn); i++) {
switch (adn[i]) {
case 'A': a++; break;
case 'C': c++; break;
case 'G': g++; break;
case 'T': t++; break;
}
}
printf("A: %d, C: %d, G: %d, T: %d\n", a, c, g, t);
return 0;
}
strlen() retorna la longitud de la cadena
Funcions
Una funció ens permet encapsular un càlcul. Per exemple, una funció que retorna el percentatge d'una base:
#include <stdio.h>
#include <string.h>
float percentatge_base(char adn[], char base) {
int i, compt = 0;
for (i = 0; i < strlen(adn); i++) {
if (adn[i] == base) compt++;
}
return (100.0 * compt) / strlen(adn);
}
int main() {
char seq[] = "AGCTAGCT";
printf("%%A = %.2f\n", percentatge_base(seq, 'A'));
printf("%%G = %.2f\n", percentatge_base(seq, 'G'));
return 0;
}
La funció rep la seqüència i la base, retorna el %
Exercicis
- Escriu un programa que demani una lletra i digui si és vocal o consonant (amb
if). - Utilitza un bucle
whileper llegir bases fins que l'usuari introdueixi un '0'. - Crea una funció
complementaria(char base)que retorni la base complementària (A→T, C→G, etc.).
Mini Projecte – Calculadora de Composició Nucleotídica
Escriu un programa que:
- Demani una seqüència d'ADN (cadena de text, màxim 100 caràcters).
- Calculi el nombre i el percentatge de cada base (A, C, G, T).
- Utilitzi una funció
comptar_base()per no repetir codi. - Mostri un resum net com:
Seqüència: AGCTAGCT A: 2 (25.0%) C: 2 (25.0%) G: 2 (25.0%) T: 2 (25.0%) Longitud total: 8 bases
Ampliació: fes que també calculi el contingut GC ((G+C)/total*100).