Panduan Praktikum Pemrograman Komputer Versi2014
-
Upload
tommy-chen -
Category
Documents
-
view
56 -
download
10
description
Transcript of Panduan Praktikum Pemrograman Komputer Versi2014
Sebelum praktikum, susun algoritma dan atau flow chart
Page 1
PANDUAN PRAKTIKUM PEMROGRAMAN KOMPUTER
PROGRAM STUDI TEKNIK NUKLIR
TAHUN AKADEMIK 2013/2014
DOSEN PENGAMPU
MONDJO
JURUSAN TEKNIK FISIKA
FAKULTAS TEKNIK UGM
Sebelum praktikum, susun algoritma dan atau flow chart
Page 2
Tata tertib
1. Peserta praktikum wajib menjaga ketertiban selama
melaksanakan kegiatan praktikum
2. Wajib hadir sesuai dengan jadwal yang telah ditentukan
3. Acara praktikum diberikan satu minggu sebelum
pelaksanakan praktikum, sehingga perserta harus
mempersiapkan diri
4. Ketidakhadiran maksimum 2 kali
5. Laporan praktikum diserahkan satu minggu setelah
praktikum atau jadwal acara praktikum berikutnya
Waktu praktikum
1. Alokasi waktu praktikum 110 menit
Sebelum praktikum, susun algoritma dan atau flow chart
Page 3
Isi laporan
1. Problem/masalah
2. Tujuan
3. Analisis
a. Informasi
b. Data
c. Landasan teori
4. Algoritma
5. Diagram alir (flow chart)
6. Listing program
7. Output eksekusi program
8. Catatan
Ukuran kertas A4, ukuran huruf 10, spasi 1
Jika masih ada waktu luang, gunakan waktu tersebut untuk menyusun laporannya. Tampilkan identitas Saudara (Nama dan Nomor mahasiswa) dalam
tampilan keluaran setiap tugas yang Anda kerjakan
Sebelum praktikum, susun algoritma dan atau flow chart
Page 4
Laporan praktikum
LAPORAN PRAKTIKUM PEMROGRAMAN KOMPUTER PROGRAM STUDI TEKNIK NUKLIR
NAMA : NOMHS : KELAS : HARI/TANGGAL PRAKTIKUM : HARI/TANGGAL LAPORAN :
ACARA :
JURUSAN TEKNIK FISIKA FAKULTAS TEKNIK UGM
Sebelum praktikum, susun algoritma dan atau flow chart
Page 5
ACARA PRAKTIKUM KE 1 : PROGRAM SEDERHANA DENGAN STATEMENT BERURUTAN
Tujuan: praktikan dapat menyusun program sederhana dengan statement berurutan Contoh kasus: menentukan luas dan keliling lingkaran
1. Analisis : a. informasi : luas, keliling b. data : jari-jari lingkaran (r) c. landasan teori
i. luas=𝜋𝑟2 ii. keliling=2𝜋𝑟
2. algoritma a. baca data jari-jari lingkaran (r) b. Hitung luas dengan persm c.i c. Hitung keliling dengan persamaan c.ii d. Tampilkan luas lingkaran (luas) e. Tampilkan keliling lingkaran (keliling)
3. Program: #include<iostream> using namespace std; const double pi = 3.14; // deklarasi konstanta pi int main() { int r; double luas, keliling; // memberi r lewat papanketik cout<<"Jari-jari lingkaran = ";cin>>r; luas=pi*r*r; keliling=2*pi*r; cout<<"Keliling lingkaran = "<<keliling<<" cm\n"; cout<<"Luas lingkaran = "<<luas<<" cm\n"; system("pause"); return 0; }
Sebelum praktikum, susun algoritma dan atau flow chart
Page 6
Tugas praktikan acara ke-1: 1. Modifikasi program di atas dengan menambahkan tampilan
identitas praktikan (nama , nomor mahasiswa) dan informasi keliling persatuan luas lingkaran tersebut.
2. Buat program untuk menghitung volume, luas permukaan, dan luas permukaan per satuan volume bola. Data adalah jari-jari bola. Luas permukaan bola =4𝜋𝑟2 volume bola = 4
3𝜋𝑟3
3. Buat program untuk menghitung suhu dalam derajat Kelvin. Data tersedia suhu dalam derajat Fahrenheit. Landasan teorinya C=(F-32)*5/9 dan K=C+273
Sebelum praktikum, susun algoritma dan atau flow chart
Page 7
ACARA PRAKTIKUM 2 : MENYUSUN PROGRAM DENGAN STATEMENT BERCABANG SEDERHANA
Tujuan : Peserta dapat menggunakan ststement if Masalah : Menentukan upah mingguan pekerja dengan tarif upah Rp.10000,00/jam. Jika jumlah jam kerja mingguan melebihi 40 jam, jumlah jam kelebihannya dihitung lembur dengan tarif kerja lembur 1,5 kali tarif upah
1. Analisis a. Informasi : upah yang diterima pekerja (upah) b. Data :
i. jumlah jam kerja kerja,( jam) ii. tarif kerja (tarif=10000)
c. Landasan: upah sama dengan hasil kali jam kerja dengan tariff upah, tetapi jika jam kerja melebihi 40 jam, kelebihannya dihitung lembur
2. Algoritma a. Hitung tarif_ lembur (t_lembur) b. Input jam kerja (jam) c. Hitung upah:
i. jam kerja > 40 : upah=40×tarif+(jam-40) ×t_lembur
ii. jam kerja <=40 : upah=jam ×tarif d. tampilkan upah yang diterima (upah)
3. diagram alir
Sebelum praktikum, susun algoritma dan atau flow chart
Page 8
4. Listing program #include<iostream> #include<iomanip> using namespace std; //sistem upah mingguan dengan tarif Rp.10000/jam // Upah mingguan berdasarkan jumlah jam kerjanya // jika jam kerja melebihi 40 jam, // kelebihannya dihitung lembur // tarif lembur 1,5 kali tarif normalnya int main() { double upah, tarif=10000, t_lembur; int jam; t_lembur=1.5*10000; cout<<fixed<<showpoint<<setprecision(2); cout<<"Jumlah jam kerja mingguan = ";
cin>>jam; if (jam>40)
upah=40*tarif+(jam-40)*t_lembur; else upah = jam*tarif; cout<<"Upah mingguan yang diterima = Rp." <<setw(12)<<upah<<endl; system("pause"); return 0; }
Tugas Praktikan acara 2
1. Modifikasi program di atas dengan tambahan ketentuan bahwa jika jam kerja kurang dari 20 jam upah dikurangi 20% dari upah yang seharusnya diterima
2. Penggajian pegawai ditetapkan berdasarkan gaji pokok Rp. 2000000,00. Bagi pegawai yang tidak masuk kerja didenda Rp 80000,00/per hari tidak masuk kerja. Bagi pekerja yang rajin, tidak pernah tidak masuk kerja di beri bonus Rp. 200000,- Saudara diminta membuat program untuk maksud menentukan gaji pegawai tersebut
3. Sama dengan tugas 2, dengan ketentuan tambahan, pegawai diizinkan tidak masuk kerja satu hari, tetapi yang berhak mendapatkan bonus hanya yang benar-benar tidak pernah tidak masuk kerja dalam bulan tsb.
Sebelum praktikum, susun algoritma dan atau flow chart
Page 9
ACARA PRAKTIKUM 3 : MENYUSUN PROGRAM DENGAN STATEMENT BER BERULANG SEDERHANA
Tujuan : Peserta dapat menggunakan ststement while Maslah: Membuat program untukmenentukan jumlah tebakan angka random sampai tebakan benar. Rentang angka acak dengan rentang angka dari 0 sampai dengan 9.
1. Analisis: a. Informasi nomor tebakan :nomor b. Data : c. Landasan : angka random dibangkitkan dengan rentang 0
s/d 9. Kemudian angka tersebut ditebak oleh pengguna, jika tebakan salah diulangi lagi tebakannya samapi benar
2. Algoritma a. Bangkitkan angka random 0 sampai dengan 9, (nilai) b. Beri nilai ulang=true c. Beri nilai nomor=0; d. Kerjakan selama ulang benar
i. Nomor=nomor+1 ii. Inputkan nilai tebakan (tebak)
iii. Ulang=tebak!= nilai e. Tampilkan nomor tebakan, nomor
3. Flow chart
Sebelum praktikum, susun algoritma dan atau flow chart
Page 10
4. Listing program #include<iostream> #include<cstdlib> // program tebakan angka random using namespace std; int main() { int nilai,tebak,nomor=0; bool ulang(true); nilai=rand()%10; // rand() di cstdlib. while(ulang) { cout<<"Inputkan nilai tebakan 0 - 9 : ";
cin>>tebak; ulang=nilai!=tebak; nomor=nomor+1; } cout<<"Angka random = "<<tebak
<<" tertebak pada tebakan ke "<<nomor<<endl; system("pause"); return 0; }
Tugas Praktikan: 1. Untuk membangkitkan angka random gunakan statement
nilai=(rand()+time(0))%100 time(0) ada pada file header ctime
Setelah inputan tebakan yang salah diberi komentar” terlalu rendah” jika nilai tebakan lebih rendah dari nilai, dan “ terlalu tinggi “ jika tebakan lebih besar dari nilai
2. Membuat program untuk menampilkan sejumlah data serta rerata data tersebut. Nilai data diinputkan dan untuk menunjukkan data sudah selesai diinputkan dengan memasukan suatu nilaitertentu (-111). Jika nilai data 0 maka tidak digunakan dalam menghitung rerata. Contoh data 12 14 23 45 13 0 54 55 14 -111
Sebelum praktikum, susun algoritma dan atau flow chart
Page 11
ACARA PRAKTIKUM 4 : MENYUSUN PROGRAM DENGAN STATEMENT BERULANG SEDERHANA DENGAN STATEMENT FOR
Tujuan : Peserta dapat menggunakan statement for Masalah: Menentukan nilai fungsi secara numeric, yaitu dengan
menyatakan dengan nilai jumlah suatu deret. Contoh kasus nilai F(x)=ex
1. Analisis:
a. Informasi: nilai fungsi =fx
b. Data: bentuk deret fungsi, cacah suku deret, n
c. Landasan: Untuk menjumlahkan jumlah deret secara
numeric dengan menjumlahkan mulai suku pertama
sampai terakhir
𝑒𝑥 = 1 +𝑥
1!+
𝑥2
2!+
𝑥3
3!+ ⋯ , −∞ < 𝑥 < ∞
Berdasarkan persamaan di atas bentuk umum suku deret adalah
𝑥 𝑖
𝑖! Sehingga 𝑆𝑖 =
𝑥
𝑖𝑆𝑖−1 dan 𝑒𝑥 =
𝑥 𝑖
𝑖!
𝑛𝑖=0 = 𝑆0 + 𝑆𝑖
𝑛𝑖=1
2. Algoritma
a. Baca data pangkat exponent , x dan jumlah deret
b. Suku pertama s=1 dan fx =S
c. Nomor suku i=1
d. Untuk suku ke i
i. s=sx/i
ii. fx=fx+S
e. Ulangi d untuk suku berikutnya sampai suku ke n.
f. Tampilkan nilai fungsi fx
3. Diagram alir
Sebelum praktikum, susun algoritma dan atau flow chart
Page 12
4. Listing program
#include<iostream> using namespace std; int main() { double x,fx,s;int n; cout<<"Program untuk menghitung exp(x) \n"; cout<<"Masukkan nilai x = "; cin>>x; cout<<"cacah suku deret = "; cin>>n;
for(int i=1;i<n;i++) { s=s*x/i; fx=fx+s; } cout<<"Nilai fungsi exp("<<x<<") = "<<fx<<endl;; system("pause"); return 0; }
Tugas Praktikan:
1. Lengkapi listing program di atas, dengan mengacu diagram alir
yang ada. Upayakan tampilan keluaran yang baik sesuai dengan
yang Saudara inginkan. Setelah itu program disempurnakan
dengan menampilkan nilsi ex dengan fungsi exp(x) pada file
header cmath
2. Hitung nilai dari fungsi dibawah ini::
1 + 𝑥 𝑛 = 1 +𝑛𝑥
1!+
𝑛 𝑛 − 1 𝑥2
2!+ ⋯
Sebelum praktikum, susun algoritma dan atau flow chart
Page 13
ACARA PRAKTIKUM 5 : MENYUSUN PROGRAM DENGAN STATEMENT
BERULANG SEDERHANA UNTUK ANALISIS POPULASI Tujuan : Peserta dapat menggunakan statement for untuk melaporkan hasil pengukuran Masalah: analisis data hasil pengukuran untuk menentukan hasil pengukuran.
Ralat diambil 1 kali nilai standar deviasi.
1. Analisis:
a. Informasi: rerata, ralat
b. Data: data pengukuran yang dilakukan n kali
c. Landasan: Hasil pengukuran ditampilkan dengan nilai rerata
±ralat. Standar deviasi dihitung dengan persamaan
𝜎 = 𝑥2 − 𝑥 𝑥 = 𝑥𝑖𝑛𝑖=1
𝑛 𝑥2 =
𝑥𝑖𝑛𝑖=1
𝑛
2. Algoritma
a. Memasukan data
b. Menghitung rerata dan standar deviasi serta ralat
c. Tampilkan hasil: rerata dan ralat
3. Diagram alir
4. Listing program
#include<iostream> #include<cmath> using namespace std; //Analisis hasil
// pengukuran double x[20]= {15,16,23,16, 18,20,20,17,16,12, 15, 16,18,17,15,16,25,10, 14,17}; int n=20; int main() {
int i; double
jum1,jum2,rerata,rerata2,rala
Sebelum praktikum, susun algoritma dan atau flow chart
Page 14
t,stdeviasi; for(i=0;i<n;i++) { jum2+=pow(x[i],2); // pow(x,y) di cmath } rerata=jum1/n; cout<<"Hasil pengkuran : "<<rerata<<" dg ralat " <<ralat<<endl; system("pause"); return 0; }
Tugas Praktikan:
1. Lengkapi listing program di atas, dengan mengacu diagram alir yang ada.
Upayakan tampilan keluaran yang baik sesuai dengan yang Saudara
inginkan. Setelah itu program disempurnakan dengan menampilkan data
pengukuran.
2. Cara lain untuk menganalisis data pengukuran seperti dalam contoh
dapat dilakukan dengan menghitung standar deviasi menggunakan
persamaan :
𝜎 = 𝑥𝑖 − 𝑥 2 = 𝑥𝑖−𝑥 2𝑛
𝑖=1
𝑛 𝑥 =
𝑥𝑖𝑛𝑖=1
𝑛
Buat program untuk maksud tersebut dengan persamaan ini, dan gunakan
data yang sama dengan contoh program
Catatan: 1. Jika masih ada waktu luang, gunakan waktu tersebut untuk
menyusun laporannya. 2. Tampilkan identitas Saudara dalam tampilan keluaran setiap tugas
yang Anda kerjakan
Sebelum praktikum, susun algoritma dan atau flow chart
Page 15
ACARA PRAKTIKUM 6 : MENYUSUN PROGRAM DENGAN STATEMENT
SWITCH Tujuan : Peserta dapat menggunakan statement switch untuk menyusun menu program Masalah: Membuat pola huruf U dengan ukuran (tinggi, lebar, tebal) serta kharakter huruf untuk menggambar pola tersebut di samping.
1. Analisis
a. Informasi : tampilan pola
b. Data : ukuran pola : nbaris, lebar,dan tebal; dua karakter
yang digunakan (karakter1, karakter2)
c. Landasan : tampilkan per baris dari baris pertama sampai
dengan ke nbaris.
2. Algoritma (penampilan pola)
a. Baris ke 1 s/d ke (nbaris-tebal): tampilkan tebal
karakter1, (lebar-2tebal) karakter2, tebal karakter1, dan
ganti baris.
b. Baris ke nbaris-tebal+1 s/d ke nbaris tampilkan lebar
karakter1, ganti baris
3. Diagram alir
4. Listing program
#include<iostream> #include<string> using namespace std; //garis karakter, kode ≠0 ganti baris void garisx(char simbol,int lebar, int kode) {for(int kolom=0; kolom<lebar; kolom++) cout<<simbol; if(kode!=0) cout<<endl; } void menuprogram(int& pilih) // menu program { string menu[4]={"Selesai ","Input ukuran", "Input kharakter digunakan", "tampil pola"}; cout<<endl;for(int i=0;i<4;i++) cout<<i<<". "<<menu[i]<<endl; cout<<"inputkan nomor pilihan Anda = ";cin>>pilih;
x x - - - - x x
x x - - - - x x
x x - - - - x x
x x - - - - x x
x x - - - - x x
x x - - - - x x
x x x x x x x x
x x x x x x x x
Sebelum praktikum, susun algoritma dan atau flow chart
Page 16
} //menampilkan pola void tampil_u(char khar1, char khar2, int tinggi, int lebar, int tebal) { for(int baris=1;baris<=(tinggi-tebal);baris++) { garisx(khar1,tebal,0); garisx(khar2,lebar-2*tebal,0); garisx(khar1,tebal,1); } for(int baris=1;baris<=tebal;baris++) garisx(khar1,lebar,1); } //====== program utama =================== int main() { char karak1='h',karak2=' '; int pilihan, nbaris=10,nkolom=10,tebal=2; do
{menuprogram(pilihan); switch (pilihan) { case 1 : { cout<<" Tinggi, lebar, tebal pola = "; cin>>nbaris>>nkolom>>tebal; break;} case 2 : { cout<<"dua karakter untuk pola : "; cin>>karak1>>karak2;break;} case 3 : {tampil_u(karak1,karak2,nbaris,nkolom,tebal); break;} default : cout<<" terima kasih …..."; } } while(pilihan!=0); system("pause"); return 0; }
Tugas: 1. Susun diagram alir masing-masing subprogram dan program utama.
2. Sempurnakan program ini sehingga tampilan output lebih baik dan data yang diinputkan tidak salah, baik pada pemilihan menu program, ukuran pola maupun karakter yang digunakan.
3. Tambah dua menu lagi yaitu menampilkan pola huruf F dan menampilkan pola huruf Z
Sebelum praktikum, susun algoritma dan atau flow chart
Page 17
ACARA PRAKTIKUM 7 : MENYUSUN PROGRAM DENGAN TIPE VARIABEL STRUCT
Tujuan : Peserta dapat mengolah data tipe struct dalam suatu variable jajaran Masalah: data fisik sekelompok orang meliputi nama, tinggi , berat badan, dan jenis kelamin. Program digunakan unutk mengolah data dan memnampilkannya.
1. Analisis : a. Informasi : data sesuai yang diinginkan b. Data : Data fisik sekelompok orang c. Landasan baca data sesuai yang dinginkan
2. Algoritma 3. Diagram alir 4. Listing program
#include<iostream> #include<iomanip> using namespace std; struct tfisik {char nama[15];double tinggi,berat;bool pria;}; tfisik datafisik[20]={{"Arjuna",170,60,true}, {"Seno",190,80,1},{"Arimbi",170,45,false}, {"Sengkuni",140,40,1},{"Banowati",165,40,0}}; void tampildata() // tampilkan data fisik { for(int i=0;i<5;i++) { cout<<setw(20)<<datafisik[i].nama<<setw(6) <<datafisik[i].tinggi<<setw(6)<<datafisik[i].berat; if(datafisik[i].pria) cout<<"pria\n";
else cout<<"wanita\n"; } }
Sebelum praktikum, susun algoritma dan atau flow chart
Page 18
void tampil_yg_tinggi(double inggil) // nama tinggi ttt { int i; for(i=0;i<5;i++) { if(datafisik[i].tinggi==inggil) { cout<<"Yg tinggi badan = "<<inggil<<"cm adalah " <<datafisik[i].nama<<"\n"; continue; } } } // program utama =================== int main() { char menu[3][350] ={"Selesai ","tampildata", "tampil nama dgtinggi tertentu"}; int pilihan; double dhuwur; do { for(int i=0; i<3;i++) cout<<i<<". "<<menu[i]<<endl; cout<<"Inputkan nomor pilihanmu = ";cin>>pilihan; switch (pilihan) { case 0 : {cout<<"matur suwun "; break;} case 1 : {tampildata();break;} case 2 : {cout<<"Tinggi badan = "; cin>>dhuwur; tampil_yg_tinggi(dhuwur); break; } default : cout<<"Salah pilih ............."; }} while(pilihan!=0); system("pause"); return 0; }
Tugas : Sempurnakan program ini sehingga
1. Tampilan lebih baik 2. Tambah menu
a. menginputkan data fisik b. menampilkan nama yang berjenis kelamin tertentu, c. menampilkan nama yang tertinggi
3. susun diagram alir masing-masing program utama dan subprogram
Saudara boleh menambahkan menu lain sehingga program ini lebih baik lagi.
Sebelum praktikum, susun algoritma dan atau flow chart
Page 19
ACARA PRAKTIKUM 8 : MENYUSUN PROGRAM DENGAN TIPE VARIABEL JAJARAN (ARRAY)
Tujuan : Peserta dapat mengolah data dengan menggunakan variable tipe jajaran Masalah: Menyelesaikan persamaan linier simultan dengan metode eliminasi, untuk 3 variabel bebas 1. Analisis
a. Informasi akar persamaan simultan b. Data : tetapan persamaan linier simultan (PLS) c. Landasan: konstanta PLS di nyatakan dengan elemen matrik
3x4, selanjutnya diubah agar menjadi elemen matrik diagonal =1 . maka akar persamaan ada pada kolom ke 4 matrik tersebut.
𝑎11𝑥1
𝑎21𝑥1
𝑎31𝑥1
+𝑎12𝑥2
+ 𝑎22𝑥2
+𝑎32𝑥2
+𝑎13𝑥3 =+ 𝑎23𝑥3 =+𝑎33𝑥3 =
𝑎14
𝑎24
𝑎34
𝑎11
𝑎21
𝑎31
𝑎12
𝑎22
𝑎32
𝑎13
𝑎23
𝑎33
𝑎14
𝑎24
𝑎34
1
00
0 10
0 01
𝑎14
𝑎24
𝑎34
Persamaan tidak akan berubah maknanya jika: dikalikan atau dibagi dengan tetapan, ditambah atau dikurangi kelipatan persamaan lainnya.
2. Algoritma (subprogram proses1) a. Persamaan 1 dibagi dengan a11 , selanjutnya persamaan
lainnya dikurangi dengan kelipatan elemen pada kolom 1, persamaan tersebut (ab1) dengan persamaan ke 1
b. Ulangi untuk persamaan lainnya : Persamaan k dibagi dengan akk , selanjutnya persamaan lainnya dikurangi dengan kelipatan elemen pada kolom k, persamaan tersebut (abk) dengan persamaan ke k
c. Tampilkan akar persamaan, elemen pada kolom 4 3. Diagram alir 4. Listing program
#include<iostream> using namespace std; //Penyelesaian persamaan Linier simultan (PLS) dg eliminasi double m3[3][4]={{2,7,4,28},{11,2,5,30},{9,5,3,28}};
Sebelum praktikum, susun algoritma dan atau flow chart
Page 20
void proses1(double m3[3][4]);// diagonal = 1 void tampil(double mx[3][4]);// tampil matrik //========================utama======================== int main() { tampil(m3); proses1(m3); tampil(m3); system("pause"); return 0; } //================subprogram============================ void proses1(double m3[3][4]) //ubah diagonal =1 { for(int baris=0; baris<3;baris++) { for(int kolom=3;kolom>=baris;kolom--) m3[baris][kolom]/=m3[baris][baris]; for(int brs=0;brs<3;brs++) { if(baris==brs) continue; for(int klm=3;klm>=baris;klm--) m3[brs][klm]-=m3[brs][baris]*m3[baris][klm]; } } for(int i=0;i<3;i++) cout<<"X("<<i+1<<")= " <<m3[i][3] <<endl; //akar persamaan pada kolom 3 } void tampil(double mx[3][4]) // tampil matrik { for(int baris=0;baris<3;baris++) { for(int kolom=0;kolom<=3;kolom++) { cout<<mx[baris][kolom]<<"\t"; } cout<<"\n"; } }
Tugas praktikan: 1. Sempurnakan program dengan tampilan menu program yang
dapat a. menampilkan PLS, b. menginputkan data tetapan PLS c. menampilkan akar persamaan PLS
2. Saudara boleh menambahkan menu lainnya Catatan: Ini materi praktikum terakhir, bagi yang pernah tidak masuk diberi
kesempatan mengerjakan praktikum yang ditinggalkan, silahkan hubungi asisten.