bahan dpk-io-array-fungsi
DESCRIPTION
Dasar pemrograman komputerTRANSCRIPT
Adharul Muttaqin [email protected] Catatan Kuliah Dasar Komputer
PENGGUNAAN PRINTF() Interaksi program dengan user biasanya melalui input dan output (Phisical - C Handbook 2011). Printf() digunakan
untuk menampilkan karakter di layar monitor.
printf("Hello world");
Kode di atas adalah untuk menampilkan tulisa “Hello world” di layar monitor.
Tetapi printf() tidak sekedar menampilkan teks. Perhatikan contoh berikut:
printf("Totalnya adalah %d\n", sum);
Ketika program dijalankan kita akan mendapatkan bahwa %d digantikan dengan isi dari variable sum.
printf() selalu memerlukan suatu format string sebagai argument (atau parameter input) pertama dan diikuti oleh
satu atau lebih argument berikutnya yang berupa variable, konstanta, atau expression (persamaan) yang akan kita
format dan cetak di layar.
Format string dapat terdiri dari tiga jenis text:
1. Karakter biasa yang dicetak seperti apa adanya
2. escape sequences untuk karakter khusus seperti `\n' untuk ganti baris; 3. conversion specifications, yaitu teks yang dimulai dengan `%' dan diakhiri dengan conversion character
seperti `d'. Ada banyak escape sequences yang didefinisikan di C , sebagian contohnya adalah:
Escape Sequence Character represented
\n newline
\t tab
\\ backslash itself
\' quote ‘
\" double quote ”
Contoh,
printf("\t\"My name is \'%s\'\"\n", "Slim Shady");
hasilnya:
"My name is 'Slim Shady'"
Teks konversi seperti ``%d'' akan menyuruh printf() untuk menyisipkan nilai integer dari argument berikutnya.
``%d'' berarti nilai yang ditampilkan ditulis dalam bentuk bilangan desimal. Contoh:
int a=4;
double x=2.5;
printf("Here is an integer: %d\t", a);
Adharul Muttaqin [email protected] Catatan Kuliah Dasar Komputer
printf("and here is a double: %f\n", x);
Lihat bahwa kita gunakan %f untuk type double atau float. Kode konversi harus disesuaikan dengan tipe variable
yang digunakan dan format yang diinginkan. Hati-hati menggunaan kode konversi ini.
Output kode di atas adalah
Here is an integer: 4 and here is a double: 2.500000
Seperti yang kita lihat, kita mendapatkan tab setelah karakter 4, tapi kiga mendapatkan nilai x yang dicetak
sepanjang 6 digit di belakang koma. Hal ini diakibatkan bahwa “%f” selalu menuliskan bilangan float atau double
dengan sepanjang 6 digit di belakang koma.
Jika kita tidak ingin menampilkan 6 digit di belakang koma, misalnya kita ingin menampilkan hanya dua digit di
belakang koma, kita dapat tuliskan format teksnya menggunakan %.2f .
Contoh:
printf("Here is an integer: %d\t", a);
printf("and here is a double: %.2f\n", x);
-----------------------------------------------------------------
Here is an integer: 4 and here is a double: 2.50
Selain menetapkan panjang digit setelah koma (nilai presisi) dapat pula ditetapkan sebuah field-width; yaitu
panjang karakter minimum yang akan ditampilkan oleh satu kode konversi. Jika karakter yang ditampilkan lebih
pendek, biasanya akan ditambahkan spasi secara otomatis. Contoh:
int a=1;
double x=-0.004;
printf("%3d\t%8.2f\n", a, x);
a=10;
x=-40.009;
printf("%3d\t%8.2f\n", a, x);
a=100;
x=-4001;
printf("%3d\t%8.2f\n", a, x);
-----------------------------
1 -0.00
10 -40.01
100 -4001.00
Adharul Muttaqin [email protected] Catatan Kuliah Dasar Komputer
Di bawah ini beberapa kode konversi yang umum digunakan:
Conversion
code
Argument
type Formatted as
%d int Angka Biasa (eg. 365)
%i int sama dengan %d
%c int Character
%f double Bilangan real, termasuk angka desimal. Secara default presisinya adalah 6 digit di
belakang koma
%e,%E double Alternatif untuk %f yang diformat dengan menggunakannotasi eksponensial.
Contoh 3.652560e+02, atau 3.652560E+02
%g,%G double Kombinasi %f dan %e
%s string String
%%
Karakter %
Tidak ada type String sederhana di C; Sampai saat ini yang penting kita tahu, cara unutk menampilkan string adalah
dengan %s pada printf().
Contoh lagi:
char c='A';
printf("%s %c is %d\n", "The ASCII code for", c, c);
----------------------------------------------
The ASCII code for A is 65
Angka 65 muncul karena isi variable c ditampilkan sebagai bilangan desimal kode ascii dari ‘A’.
double x=365.256;
printf("%.1f\t%8.1e\t%.10E\n", x, x, x);
----------------------------------------
365.3 3.7e+02 3.6525600000E+02
double y=1.25e-5;
printf("%12.4f %8.4g\n%12.4f %8.4g\n", y, y, y*1000, y*1000);
printf("%12.4f %8.4g\n", y*1e8, y*1e8);
printf("%12.4f %8.4g\n", y*1e12, y*1e12);
---------------------------------------------------------------
0.0000 1.25e-05
0.0125 0.0125
1250.0000 1250
12500000.0000 1.25e+07
Hati-hati dalam menggunakan format specifier, mungkin program kita tidak error tapi akan mengeluarkan karakter
aneh.
Adharul Muttaqin [email protected] Catatan Kuliah Dasar Komputer
PENGGUNAAN SCANF() scanf() digunakan untuk menerima data input. Cara kerja lebih mirip kebalikan dari printf(). Seperti juga printf(),
scanf() juga memerlukan format string sebagai argument atau parameter pertamannya, kemudian diikuti
beberapa parameter yang merupakan variabel-variabel yang akan diisi dengan suatu nilai.
Format string untuk scanf() secara umum sama dengan yang ada pada printf(). Dua perbedaannya adalah:
1. Spasi pada format string harus sesuai dengan jumlah spasi dan tab pada input
2. Conversion specier untuk float dan double tidak sama: floats tetap menggunakan %f, tetapi double harus
menggunakan %lf {Catatan: l adalah huruf “el” bukan angka 1; lf=long float :) }
Disamping menuliskan nama variabel yang akan menampung nilai input, kita harus memberikan awalan & untuk
mengarahkan ke lokasi memori yang digunakan variabel.
Contoh scanf yang menggabungkan double dan int:
Values input are:
4 0.00451
-------------------
/* Code fragment to use to input data of the above format */
int x;
double y;
scanf("%d %lf", &x, &y);
Pengecualian adalah untuk string (misalnya array of char) yang tidak memerlukan & untuk menerima input.
#include <stdio.h>
#include <stdlib.h>
int
main()
{
int i;
float f;
double d;
char strng[21];
printf("type in an int: ");
scanf("%d", &i);
printf("value entered: %d\n\n", i);
printf("type in a float: ");
scanf( "%f", &f);
printf("value entered: %f\n\n", f);
printf("type in a double: ");
scanf("%lf", &d);
printf("value entered: %f\n\n", d);
printf("type in a string (up to 20 characters long): ");
scanf("%s", strng); /***Strings do NOT require the & operator***/
printf("string entered: %s\n\n", strng);
Adharul Muttaqin [email protected] Catatan Kuliah Dasar Komputer
ARRAY
DEFINISI Array adalah sebuah tipe variable yang dapat menampung sekumpulan data yang bertipe sama. Data tersebut
disimpan secara berurutan dan masing-masing data mempunyai nilai index yang identik sebagai nomor urut data.
Untuk array sepanjang N elemen, urutan data yang pertama mempunyai index 0, urutan data terkahir mempunyai
index N-1.
DEKLARASI Variabel bertipe array dideklarasikan dengan cara yang sama seperti variabel biasa, dimulai type data diikuti
dengan nama variable, tetapi khusus untuk array setelah nama variable harus diikuti dengan tanda kurung kotak
(square bracket) yang berisi angka yang menetapkan berapa panjang array. Angka ini harus selalu integer dalam
bentuk konstanta atau pun variabel. Perhatikan contoh berikut:
char cc[10],c; /* mendeklarasikan variable cc dengan type array of 10
* char dan sebuah variable c dengan type char biasa
*/
int xx[4];
int i, j=3, readings[200];
double y[25], sum, voltage[j]; //nilai j=3, lihat baris sebelumnya.
ARRAY ELEMENTS
Begitu kita deklarasikan array, kita dapat menggunakannya setiap data sebagai sebuah elemen seperti penggunaan
variable biasa. Element atau item suatu array dapat dipanggil dengan menggunakan nama variabel diiikuti dengan
nilai index di dalam kurung kotak. Contoh:
harga[2] = 6.5;
i = i * harga[2];
printf(“Masukkan harga item ke 1/n”);
scanf(“%f”,&harga[0]);
Seringkali array diproses secara identik dan masal yang biasanya diterapkan dalam loop. Contoh:
sum=0.0;
for (i=0; i<4; i++)
sum += xx[i]*yy[i];
INISIALISASI
Berikut ini contoh melakukan inisialisasi nilai pada sebuah array pada C:
int a[5] = { 5, 10, 15, 20, 25 };
/* contoh di atas akan sama dengan */
int a[5];
Adharul Muttaqin [email protected] Catatan Kuliah Dasar Komputer
a[0]=5; a[1]=10; a[2]=15; a[3]=20; a[4]=25;
Jika menggunakan inisialisasi seperti di atas, sebenarnya kita tidak perlu menetapkan panjang array. Compiler akan
menghiung sendiri panjang array berdasarkan nilai inisialiasai. Perhatikan contoh berikut, didalam kurang kotak []
tidak ada angkanya: (Deitel and Deitel 2008)
int a[] = {5, 10, 15, 20, 25, 30, 35 }; /* Secara otomatis compiler akan
tahu dan membuat deklarasi int a[7] */
Contoh:
#include <stdio.h>
int main(){
//Contoh deklarasi array tunggal
float nilai[5];
//Contoh deklarasi dan inisialisasi
char kode[5]={'a','b','c','d','e'};
char t;
int idx;
//mengambil isi item dengan index tertentu dari suatu aray
idx=kode[3];
printf("Variable nama index 3 bernilai %c \n",kode[3]);
//mengisi nilai satu elemen atau item pada suatu array
kode[3]='r';
printf("Variable nama index 3 bernilai %c \n",kode[3]);
//mengisi nilai item array menggunakan looping
for (idx=0; idx<5; idx++){
nilai[idx]=2*idx+3;
}
for (idx=0; idx<5; idx++){
printf("\nKarakter sebagai input ke %d ",idx);
scanf(" %c",&kode[idx]);
/*perhatikan bahwa tulisan " %c" harus ada spasin sebelum %
*apa pengaruhnya kalau tidak diberi spasi?
* (Bukan kasus array, tapi kasus char) */
}
//menampilkan atau mengambil isi dari suatu array pada looping
printf("Nomor \t kode \t\t nilai \n");
for (idx=0; idx<5; idx++){
printf("%d \t %c \t\t %.2f \n",idx, kode[idx], nilai[idx]);
}
system("pause");
}
Adharul Muttaqin [email protected] Catatan Kuliah Dasar Komputer
ARRAY 2 DIMENSI
Struktur:
<tipedata> <arrayID>[<brs>][<klm>];
<tipedata> <arrayID>[<brs>][<klm>] =
{{<E11>, <E12>, ..., <E1klm>},
{<E21>, <E22>, ..., <E2klm>},
...
{<Ebrs1>, <Ebrs2>, ..., <Ebrsklm>}};
Contoh:
DEKLARASI DAN INISIALISASI: int A[3][3]={{1,2,3},{4,5,6},{7,8,9}};
int B[2][3] = {{1,2,3}, {4,5,6}};
PENGGUNAAN
int nilai;
nilai=A[0][1];
Adharul Muttaqin [email protected] Catatan Kuliah Dasar Komputer
Contoh:
/*
Contoh ARRAY Multidimensi
*/
#include <stdio.h>
int main(){
int matrik_A[3][3];
int matrik_B[3][3]={{1,3,7},
{5,4,2},
{0,8,3}} ;
int matrik_C[2][3]={{1,3,7},
{0,8,3}} ;
int i,j;
printf("isi matrik B elemen [2,1] adalah %d \n " , matrik_B[1][0]);
matrik_A[0][0]=matrik_B[0][0];
//Menampilkan matrik B hanya untuk baris ke-1
for(i=0;i<3;i++){
printf("matrik_B[1][%d] %d \n", i,matrik_B[1][i]);
}
//matrik_A diisi seperti matrik_B
for(i=0;i<3;i++){
for(j=0;j<3;j++){
matrik_A[i][j]=matrik_B[i][j];
}
}
for(i=0;i<3;i++){
for(j=0;j<3;j++){
printf("matrik_A[%d][%d] %d \n", i,j,matrik_A[i][j]);
}
}
for(i=0;i<3;i++){
for(j=0;j<2;j++){
printf("matrik_C[%d][%d] %d \n", i,j,matrik_C[i][j]);
}
}
system("pause");
}
Adharul Muttaqin [email protected] Catatan Kuliah Dasar Komputer
FUNCTION/ FUNGSI
PENGERTIAN Fungsi adalah suatu bagian program yang dimaksudkan untuk mengerjakan suatu tugas tertentu dan letaknya
dipisahkan dari bagian program yang menggunakannya.
Ada dua jenis fungsi di dalam bahasa C
1. Fungsi yang mempunyai nilai kembalian
Seperti kita ketika menulis fungsi matematika y=f(x), kita mempunyai sebuah fungsi dengan nama x yang
memproses x untuk menghasilkan suatu nilai yang isinya akan disimpan oleh y. Ketika dipanggil fungsi
jenis ini akan memberikan suatu hasil kembalian.
2. Fungsi yang tidak mempunya nilai kembalian.
Sering disebut sebagai prosedur. Berisi urutan proses yang tidak memberikan suatu ouput yang dapat
ditangkap oleh suatu variable.
Struktur umum:
Tipe_kembalian nama_fungsi ( argumen1, argumen2, ... )
{
statement – statement;
return value;
}
Suatu fungsi yang memberikan hasil balik (return value) selain integer perlu dideklarasikan sebelum digunakan.
Deklarasi fungsi ditulis sebelum fungsi tersebut digunakan. Akan tetapi sebaiknya setiap fungsi dideklarasikan
terlebih dahulu.
Deklarasi Fungsi:
tipe nama_fungsi( argumen1, argumen2, ... ); // (Tanpa ada badan fungsi atau statement)
Jika suatu fungsi memberikan kembalian suatu nilai, maka nilai hasil balik yang diberikan oleh fungsi dapat
dilakukan oleh statement return yang diikuti oleh nilai hasil baliknya yang ditulis tanda kurung. Contoh : return(F);
SIFAT - SIFAT DAN MANFAAT FUNGSI 1. Menghindari penulisan program yang berulang
2. Fungsi akan membagi program menjadi modul - modul yang lebih kecil (modular design) , sehingga jika
terjadi kesalahan dalam program akan lebih mudah dilacak.
3. Setiap fungsi memiliki tingkatan yang sama dan berdiri sendiri. Dengan demikian fungsi - fungsi ini dapat
dipanggil dari sembarang fungsi yang lain dengan mudah. Dalam C tidak diperkenankan sebuah fungsi ada
dalam fungsi yang lain (nested function)
4. Fungsi dalam C dapat menghasilkan nilai, data ataupun hasil atau kegiatan lain yang bukan berupa data
maupun nilai. C tidak membedakan fungsi yang menghasilkan nilai ( fungsi) dan fungsi yg menghasilkan
data (prosedur).
Adharul Muttaqin [email protected] Catatan Kuliah Dasar Komputer
RUANG LINGKUP VARIABEL
Jenis-jenis variable berdasarkan ruang lingkup pengaksesannya adalah sebagai berikut:
1. Variabel local
variabel yang namanya dan nilainya hanya dikenal di suatu blok statement tertentu saja atau didalam
suatu fungsi. Variabel ini tidak dapat diakses dari luar fungsi atau blok statement.
2. Variabel global
variabel yang dikenal di semua bagian dari program dan dapat diakses dari semua fungsi.
3. Variabel statik
variabel yang tidak berubah nilai akhirnya bila suatu proses telah keluar dari suatu blok ( fungsi ) yang
mendeklarasikannya dan kemudian masuk kembali ke blok ( fungsi ) tersebut.
Contoh:
#include <stdio.h>
int a; //deklarasi variable global a
float c; //deklarasi variable global c
float absolut(float angka);//deklarasi prototype fungsi
int main(){
char b; //variable lokal, hanya dikenali di function main()
}
void suatuFungsi(float angka){
float hasil;//variable lokal, hanya dikenali di function suatuFungsi()
char b;//variable lokal, hanya dikenali di function suatuFungsi()
return hasil ;
}
PENGIRIMAN PARAMETER
Ada dua cara pengiriman parameter ke sebuah fugnsi
1. Pengiriman parameter secara nilai (by value):.
- Yang dikirim adalah nilai dari datanya, bukan alamat memori letak datanya.
- Perubahan nilai di fungsi tidak akan merubah nilai asli di bagian program yang memanggil
fungsi walaupun keduanya menggunakan nama variabel yang sama.
- Merupakan pengiriman searah, yaitu dari bagian program yang memanggil fungsi ke fungsi
yang dipanggil.
2. Pengiriman parameter secara acuan (by refference).
- Yang dikirim adalah alamat memori letak datanya, bukan nilai dari datanya.
- Perubahan nilai di fungsi akan merubah nilai asli di bagian program yang memanggil fungsi.
Adharul Muttaqin [email protected] Catatan Kuliah Dasar Komputer
- Merupakan pengiriman dua arah, yaitu dari bagian program yang memanggil fungsi ke fungsi
yang dipanggil dan sebaliknya.
Contoh program :
#include <stdio.h >
double absolut (double X ); /* prototype fungsi Absolut */
main() //main function. Sudah tahu kan apa ini?
{
double nilai, hasil;
nilai = -123.45;
hasil=absolut(nilai);
//nilai kembalian dari fungsi absolut() diisikan ke hasil
printf("Nilai Mutlaknya adalah %.2lf \n",hasil);
//dapat pula langsung digunakan di printf
printf("Nilai Mutlaknya adalah %.2lf \n",absolut(nilai));
system("pause");
}
/* --- Fungsi untuk membuat nilai mutlak --- */
double absolut ( double X ) /* definisi fungsi */
{
if ( X < 0 ) X = -X;
return ( X );
}
REKURSIF Rekursif adalah suatu proses dari fungsi yang memanggil dirinya sendiri secara berulang – ulang.
Contoh program :
#include <stdio.h >
long int faktorial ( int n ); /* prototype fungsi */
main()
{
int n ;
n = 5;
printf(" %d != %d\n", n, faktorial(n));
system("pause");
}
long int faktorial ( int n ) /* definisi fungsi */
{
long int fak;
if ( n <= 1 ) return( 1 ) ;
else
{
fak = n * faktorial( n - 1);
Adharul Muttaqin [email protected] Catatan Kuliah Dasar Komputer
BIBLIOGRAPHY Deitel, Paul, and Harvey Deitel. "C How To Program Sixth Edition." In C How To Program Sixth Edition, by Paul
Deitel, & Harvey Deitel. Deitel, 2008.
Phisical - C Handbook. 2011. http://www-teaching.physics.ox.ac.uk/computing/handbook_c/handbook_C.html
(accessed December 4, 2011).