Anda di halaman 1dari 13

INTRODUCTION

Pemrograman ialah suatu mata kuliah yang mempelajari tentang bahasa komputer sehingga
bisa menjalankan komputer tersebut. Dalam final project ini saya diberi amanah untuk
mengerjakan tugas tentang bioinformatics. Bioinformatics adalah aplikasi komputer untuk
memanagemen informasi biologi. Maksud dari informasi biologi ialah informasi-informasi
yang terkait dengan makhluk hidup. Biasanya komputer menggunakan informasi biologi
untuk menganalisis, mengintrogasi secara biologis dan informasi gen yang bisa diaplikasikan
untuk mengetahui dasar seseorang yang ternodai oleh obat-obatan dab mengetahui
perkembangannya. Final project ini menggunakan aplikasi DNA dan RNA sebab keduanya
merupakan informasi genetic yang setiap makhluk memiliknya. Selain itu DNA dan RNA
ialah yang membawa informasi gen. Final project menggunakan DNA dan RNA merupakan
cara yang mudah sebab DNA dan RNA merupakan dasar dari susunan makhluk hidup yang
membawa informasi genetic. Dengan itu bisa diketahui ada atau tidaknya kesalahan kode gen
yang tercetak.
CASE 1

a. Background
Dalam kasus yang pertama ada sebuah DNA yang terdiri dari 30 rantai DNA. Perlu
diketahui bahwa DNA hanya mengandung 4 basa nitrogen yaitu A(adenin), T(timin),
G(guanin), C(citosin). Namun di dalam kasus tersebut ada beberapa rantai yang
mengandung variable selain variable basa nitrogen. Mungkin kasus tersebut dalam
kehidupan sehari-hari makhluk hidup tersebut DNA nya telah terkontaminasi oleh
benda asing. Sebagai dokter biasa nya memberi antibiotik atau apapun sehingga basa
nitrogen yang terkontaminasi bisa kembali seperti semula. Namun sebagai engineer
terutama yang menangani tentang makhluk hidup yaitu biomedical engineering pasti
bisa dalam menangani kasus tersebut. Dengan itu saya dalam kasus pertama ini akan
menghilangkan beberapa rantai DNA yang didalamnya terdapat variable selain basa
nitrogen. Karena perlu diketahui walaupun DNA terkontaminasi itu tidak
memunculkan variable baru. Mungkin hanya mengubah purin(AG) menjadi
pirimidin(TC) atau sebaliknya atau hanya purin menjadi purin atau pirimidin menjadi
pirimidin. Oleh sebab itu rantai yang mengandung selain variable basa nitrogen itu
bukanlah rantai DNA. Dengan itu saya perlu menghapusnya sehingga saya bisa
mendapatkan rantai DNA yang sebenarnya. Di kasus ini saya akan menjelaskan
beberapa langkah untuk menghilangkan rantai non DNA.

b. Pseudocode
1. Declare pointer FILE *input to open and read file dna.txt
2. Declare pointer FILE *output to open and write file FP_017_case1.txt
3. Declare asli[100] as a character
4. Read a string from file dna.txt and put into asli character
5. But the file not equal null
6. Declare length as an integer of asli character
7. Then declare integer valid = 1
8. Then read a file dna.txt
9. Read from i=0
10. Read until length-1
11. If strand contain ATGC, valid=0
12. If valid = 0, continue
13. Then print strand to the FP_017_case1.txt
14. Then open the file FP_017_case1.txt

c. Source Code
#include <stdio.h>
#include <string.h>

int main() {
FILE * input;
input = fopen("dna.txt", "r");
FILE * output;
output = fopen("FP_017_case1.txt", "w");
char asli[100];
while (fgets(asli, 100, input) != NULL) {
//CASE 1
int length = strlen(asli);

int valid = 1;
for (int i = 0; i < length-1; i++)
if (asli[i] != 'A' && asli[i] != 'G' && asli[i] != 'T' && asli[i] !=
'C')
valid = 0;

if (valid == 0) continue;
fprintf(output, "%s", asli);
}
}

d. Reason
Alasan kenapa dalam case 1 ini saya menggunakan source code seperti halnya di atas?
Pertama saya menggunakan FILE, karena disini berfungsi untuk membaca maupun
mencetak hasil di sebuah file.txt. Di source code tersebut menggunakan fgets
dikarenakan program saya membacanya langsung setiap string jadi tidak setiap
character satu per satu. Jadi apabila dalam sentence atau barisan tersebut terdapat
variable selain AGTC maka validnya = 1. Apabila dalam sentence atau barisan
tersebut hanya ada variable AGTC maka valid = 0 dan akan langsung di print f ke
dalam file baru yang bernama FP_017_case1.txt. selain itu kenapa saya menggunakan
for, dikarenakan program saya nanti ngeloop data yang ada dalam dna.txt. Program
akan berhenti jika data terbaca semua atau data salah. Selain itu strlen yang berada
dalam source code program saya yaitu string length yaitu fungsi yang digunakan
membaca string yang telah ditunjuk. Misalnya panjang string (asli). Kenapa program
saya menggunakan fungsi tersebut, dikarenakan panjang setiap strand berbeda-beda
sehingga apabila program tersebut menggunakan for maka tidak bisa dijalankan
karena for hanya bisa membaca string yang jumlah characternya sama setiap barisnya.
Selain itu di barisan terakhir saya menggunakan fprintf dikarenakan akan diprint di
suatu file.
e. Result
CASE 2

a. Background
Dalam kasus kedua ini saya diberi tugas untuk menghitung nukleotida setiap strand.
Namun sebelumnya saya harus mengetahui terlebih dahulu apa itu nukleotida. Seperti
yang telah dipelajari di biologi SMA, nukleotida ialah susunan DNA yang terdiri dari
basa nitrogen, gula, dan fosfat. Dalam susunan ini basa yang digunakan bisa baik basa
purin maupun primidin. Sementara gula yang digunakan bisa ribosa maunpun
deoksiribosa. Perlu diketahui bahwa posphat akan terikat pada atom yang bernomor 5
dari gula. Sedangkan gula akan terikat pada suatu atom yang bernomor 1 dari gula.
Dalam kasus tersebut saya langsung membagi 3 dikarenakan satu nukleotida terdiri
mengandung triplet basa nitrogen. seperti kalimat ini asam amino yang disandikan
misalnya metionin oelh urutan nukleotida “ATG”. Dengan itu saya bisa
menyimpulkan bahwa 1 nukleotida erdiri dari 3 basa nitrogen.

b. Pseudocode
1. Declare pointer FILE *input to open and read file FP_017_case1.txt
2. Declare pointer FILE *output to open and write file FP_017_case2.txt
3. Declare asli[100] as a character
4. Read a string from file dna.txt and put into asli character
5. But the file not equal null
6. Then string length in asli character divide with 3
7. Then a result print into FP_017_case2.txt
8. Open the file.

c. Source Code
#include <stdio.h>
#include <string.h>

int main() {
FILE * input;
input = fopen("FP_017_case1.txt", "r");
FILE * output;
output = fopen("FP_017_case2.txt", "w");

char asli[100];
while (fgets(asli, 100, input) != NULL) {
//CASE 2
fprintf(output, "%d\n", strlen(asli)/3);
}
}
d. Reason
Alasan kenapa dalam case 1 ini saya menggunakan source code seperti halnya di atas?
Pertama saya menggunakan FILE, karena disini berfungsi untuk membaca maupun
mencetak hasil di sebuah file.txt. Di source code tersebut menggunakan fgets
dikarenakan program saya membacanya langsung setiap string jadi tidak setiap
character satu per satu. Karena dalam kasus ketiga ini menghitung jumlah nukleotida
dalam 1 baris. Selain itu strlen yang berada dalam source code program saya yaitu
string length yaitu fungsi yang digunakan membaca string yang telah ditunjuk.
Misalnya panjang string (asli). Kenapa program saya menggunakan fungsi tersebut,
dikarenakan panjang setiap strand berbeda-beda sehingga apabila program tersebut
menggunakan for maka tidak bisa dijalankan karena for hanya bisa membaca string
yang jumlah characternya sama setiap barisnya. Setelah membaca string saya
langsung membaginya dengan angka 3 dikarenakan nukleotida terdiri dari 3 basa
nitrogen yang sudah saya jelaskan di background. Selain itu di barisan terakhir saya
menggunakan fprintf dikarenakan akan diprint di suatu file.

e. Result
CASE 3

a. Background
Dalam kasus 3 ini saya diberi tugas untuk mengubah yang awalnya purin jadi
pirimidin atau yang awalnya pirimidin jadi purin. Seperti yang telah dipelajari dalam
pelajaran biologi SMA, misal saya memberi nama DNA awal ialah antisense maka
disini saya akan mengubah sense itu menjadi sense. Perbedaan dari DNA sense dan
antisense ialah DNA antisense digunakan sebagai template yang akan di transkrip ke
dalam RNA untuk membuat protein sedangkan DNA sense tidak digunakan sebagai
template. Dengan ini saya bisa mengetahui mana DNA yang akan ditranskrip kedalam
RNA sehingga tidak tertukar mana yang sebenarnya menjadi template.

b. Psudocode
1. Declare pointer FILE *input to open and read file FP_017_case1.txt
2. Declare pointer FILE *output to open and write file FP_017_case3.txt
3. Declare asli[100] as a character
4. Read a string from file dna.txt and put into asli character
5. But the file not equal null
6. Declare length as an integer of asli character
7. Declare complement as a character
8. If complement character longer no exist, write an empty
9. Declare i as an integer
10. Read from i=0
11. Read until length-1
12. If asli[i] = A, complement [i] = T
13. If asli[i] = T, complement [i] = A
14. If asli[i] = G, complement [i] = C
15. If asli[i] = C, complement [i] = G
16. Then print complement[i] to the FP_017_case1.txt
17. Then open the file FP_017_case3.txt

c. Source Code
#include <stdio.h>
#include <string.h>

int main() {
FILE * input;
input = fopen("FP_017_case1.txt", "r");
FILE * output;
output = fopen("FP_017_case3.txt", "w");

char asli[100];
while (fgets(asli, 100, input) != NULL) {
//CASE 3
int length = strlen(asli);
char complement[100];
for (int i=0; i<length; i++)complement[i]=0;
for (int i = 0; i < length-1; i++) {
if (asli[i] == 'A')
complement[i] = 'T';
else if (asli[i] == 'T')
complement[i] = 'A';
else if (asli[i] == 'C')
complement[i] = 'G';
else if (asli[i] == 'G')
complement[i] = 'C';
}

fprintf(output, "%s\n", complement);


}
}

d. Reason
Alasan kenapa dalam case 3 ini saya menggunakan source code seperti halnya di atas?
Pertama saya menggunakan FILE, karena disini berfungsi untuk membaca maupun
mencetak hasil di sebuah file.txt. Di source code tersebut menggunakan fgets
dikarenakan program saya membacanya langsung setiap string jadi tidak setiap
character satu per satu. Selain itu kenapa saya menggunakan for, dikarenakan
program saya nanti ngeloop data yang ada dalam dna.txt. Program akan berhenti jika
data terbaca semua atau data salah. For yang pertama sebelum for yang didalamnya
menjelaskan if ialah for yang digunakan untuk memberhentikan keluaran setelah
pembacaan satu baris selesai. Apabila tanpa for pemberhentian itu, maka program
akan mengoutput suatu variable sampai batas yang telah ditentukan. Sebenarnya
selain pakai for juga bisa memakai memset yang fungsinya juga sama seperti halnya
for diatas. For yang kedua untu melooping fungsi if didalamnya. If didalam berfungsi
untuk mengubah variable jika variable itu sesuai dengan yang diminta. Namun ada
cara yang lebih efisien seperti yang saya gunakan di case 4 nanti. Complement disitu
merupakan tempat yang digunakan untuk mencetak variable yang telah diubah. Selain
itu di barisan terakhir saya menggunakan fprintf dikarenakan akan diprint di suatu
file.
e. Result
CASE 4

a. Background
Dalam case 4 ini saya diberi tugas untuk mengubah DNA menjadi mRNA. Perlu
diketahu bahwa mRNA merupakan RNA yang urutan basanya komplem,enter
dengan salah satu urutan basa nitrogen yang ada di DNA. Biasa DNA disebut
dengan kodon dan RNA disebut dengan kodogen. Namun perbedaan nya yaitu
terletak pada pirimidinnya. Pirimidin dalam DNA terdiri dari Timin dan Citosin.
Sedangkan pirimidin dalam RNA terdiri dari Urasil dan Citosin. Oleh sebab itu
apabila dalam DNA itu terdapat Adenin yang dimana pasangannya yaitu Timin
maka dalam RNA Timin tersebut seca otomatis akan berubah menjadi Urasil.
Namun untuk pasangan basa nitrogen yang lain masih tetap. Selain itu mRNA
bertindak sebai pola cetakan pembentuk polipetida atau protein. Sedangkan fungsi
utama mRNA adalah membawa kode-kode genetik dari DNA di inti sel menuju
ribosom di sitoplasma. Dalam bahasa lain mRNA bisa juga disebut dengan RNAd
yaitu rna duta.

b. Pseudocode
1. Declare pointer FILE *input to open and read file FP_017_case1.txt
2. Declare pointer FILE *output to open and write file FP_017_case4.txt
3. Declare asli[100] as a character
4. Read a string from file dna.txt and put into asli character
5. But the file not equal null
6. Declare length as an integer of asli character
7. Declare rnad as a character
8. If mrna character longer no exist, write an empty
9. Declare i as an integer
10. Read from i=0
11. Read until length-1
12. If asli[i] = A, rnad [i] = T
13. If asli[i] = T, rnad [i] = A
14. If asli[i] = G, rnad [i] = C
15. If asli[i] = C, rnad [i] = G
16. Then print rnad[i] to the FP_017_case4.txt
17. Then open the file FP_017_case4.txt

c. Sourcecode
#include <stdio.h>
#include <string.h>

int main() {
FILE * input;
input = fopen("FP_017_case1.txt", "r");
FILE * output;
output = fopen("FP_017_case4.txt", "w");

char asli[100];
while (fgets(asli, 100, input) != NULL) {
//CASE 4
int length = strlen(asli);
char rnad[100];
for (int i = 0; i < length; i++)rnad[i]=0;
for (int i = 0; i < length; i++) {
switch (asli[i]) {
case 'A': rnad[i] = 'U'; break;
case 'T': rnad[i] = 'A'; break;
case 'G': rnad[i] = 'C'; break;
case 'C': rnad[i] = 'G'; break;
}
}

fprintf(output, "%s\n", rnad);


}
return 0;
}

d. Reason
Alasan kenapa dalam case 3 ini saya menggunakan source code seperti halnya di
atas? Pertama saya menggunakan FILE, karena disini berfungsi untuk membaca
maupun mencetak hasil di sebuah file.txt. Di source code tersebut menggunakan
fgets dikarenakan program saya membacanya langsung setiap string jadi tidak
setiap character satu per satu. Selain itu kenapa saya menggunakan for,
dikarenakan program saya nanti ngeloop data yang ada dalam dna.txt. Program
akan berhenti jika data terbaca semua atau data salah. For yang pertama sebelum
for yang didalamnya menjelaskan if ialah for yang digunakan untuk
memberhentikan keluaran setelah pembacaan satu baris selesai. Apabila tanpa for
pemberhentian itu, maka program akan mengoutput suatu variable sampai batas
yang telah ditentukan. Sebenarnya selain pakai for juga bisa memakai memset
yang fungsinya juga sama seperti halnya for diatas. Rnad disitu merupakan tempat
yang digunakan untuk mencetak variable yang telah diubah. Dalam program di
atas saya menggunaka switch agar lebih efisien dalam menggunakan kata-kata.
Switch disini memiliki fungsi yang sama seperti halnya if. Namun if biasa
menggunakan kondisi. Sedangkan switch digunakan untuk sebuah variable yang
sudah pasti nilanya. Selain itu switch hanya untuk menyeleksi situasi yang lebih
dari 2 pilihan. Biasanya dalam switch tidak ada konstanta yang sama dan harus
menggunakan break di akhir untuk mengakhiri statement. Selain itu di barisan
terakhir saya menggunakan fprintf dikarenakan akan diprint di suatu file.

e. Result

Anda mungkin juga menyukai