Anda di halaman 1dari 69

Struktur Bahasa Pemrograman

Modul-2:
Bahasa Imperatif : C & C++
Bahasa C dan C++
• Bahasa C adalah bahasa imperatif murni,
memiliki instruksi high-level dan low-level
• Bahasa C memiliki komponen dasar yang
dapat langsung ke mesin-code, sehingga cocok
untuk membuat sistem atau bahasa yang lebih
tinggi
• Bahasa C++, berbasis pada C, namun di
perlengkapi dengan kemampuan Object
Oriented Programming (OOP)
von Neumann Machine
• Pada tahun 1940-an, John von Neumann menciptakan
arsitektur komputer, yang memiliki dua unit inti,
– pusat pegolahan CPU, yang bertanggung jawab terhadap
terlaksananya semua komputasi /instruksi program
– unit penyimpan data atau memory yang dapat dipakai
menyimpan data dan program.
• Pelaksanaan komputasi memiliki empat langkah dasar:
1. Mengambil alamat dari operand dan alamat dimana hasil
suatu ekspresi disimpan
2. Mengambil data dari alamat operand
3. Menghitung hasil berdasarkan nilai data operand
4. Menyimpan hasil komputasi di alamat hasil
• Ketika instruksi terlaksana maka keadaan (state) dari
program telah berubah. Perubahan state ini disebut
imperative Struktur Bahasa Pemrograman, Modul 4,
3
@SUARGA
Bahasa Imperatif ?
• Bahasa imperatif adalah bahasa yang mengikuti proses
von Neumann, instruksi dilaksanakan untuk mengubah
“state” dari program
• juga disebut bahasa prosedural, karena instruksi
dilaksanakan secara ber-urut menurut urutan
penulisan-nya, dan dapat terjadi pemanggilan
prosedur sebagai abstraksi dalam pelaksanaan satu
proses/tugas
• Pemakaian abstraksi seperti variabel (merupakan
model dari alamat memory), perintah assignment
(model dari transfer data), dan abstraksi dari perintah
lain dari pendekatan mesin von Newman

Struktur Bahasa Pemrograman, Modul 4,


4
@SUARGA
• Konstruksi bahasa imperatif pada umumnya memiliki
elemen berikut ini:
1. control structures
2. input/output
3. error and exception handling
4. procedural abstraction
5. expression and assignment
6. library support for data structures
• Sebagian besar dari bahasa pemrograman adalah
imperatif, karena memiliki elemen-elemen diatas,
seperti C, C++, JAVA, PHP, Python, Go, R,MATLAB dsb.
• Walau demikian beberapa bahasa sebenarnya “multi
paradigm”, seperti JAVA, C++, Python, yang juga
merupakan “Object Oriented”, atau R dan MATLAB
yang juga deklaratif.
Struktur Bahasa Pemrograman, Modul 4,
5
@SUARGA
Contoh Imperatif : Bahasa C
• Perancang utama bahasa C adalah “Dennis
Ritchie” yang bekerja pada Lab. Bell Telephone
antara 1969-1972 ketika membuat sistem
operasi UNIX untuk komputer DEC PDP-11
• Dalam perkembangannya dibantu oleh: Brian
Kernighan dan Ken Thompson.
• Bahasa C sangat populer sehingga banyak
digunakan untuk membangun sistem serta
software di tahun 70-an, seperti Linux, RDBMS
(dBase,foxBase), Lotus, Paradox, MySQL, dsb.
Struktur Bahasa Pemrograman, Modul 4,
6
@SUARGA
Brian Kernighan

Dennis Ritchie

Ken Thompson
9/10/2014 Algoritma Pemrograman,@SUARGA 7
Dennis dan Komputer PDP

Selamat Jalan kepada Dennis


12 Oktober 2011

Dennis & Ken menerima Medali


dari Presiden Bill Clinton

9/10/2014 Algoritma Pemrograman,@SUARGA 8


Struktur Dasar
• Suatu program C/C++ imperatif minimal terdiri
atas 5 bagian:
1. Preprocessor Commands (mis: header files)
2. Functions (mis: void main() )
3. Variables (tipe data, nama variabel, nilai)
4. Statement & Expressions (keyword, operator dsb)
5. Comments

Struktur Bahasa Pemrograman, Modul 4,


9
@SUARGA
Contoh sederhana
#include <stdio.h> /* preprocessor */
int main() /* main function */
{
/* my first program in C */ /* comments */
printf("Hello, World! \n"); /* function */
return 0; /* statement */
}

Struktur Bahasa Pemrograman, Modul 4,


10
@SUARGA
header files (preprocessor)
• Header file, file ber-eksentensi .h, menyimpan deklarasi
awal dari berbagai fungsi untuk pemrograman.
• Standard header file dalam C:
– stdio.h fungsi untuk file dan I/O
– math.h mathematical function
– stdlib.h deklarasi sejumlah rutin standard
– string.h string text
– time.h time/calendar
– stdarg.h argumen-argumen perubah
– ctype.h fungsi-fungsi karakter
– assert.h fungsi macro assert
– bios.h fungsi-fungsi untuk BIOS
– errno.h nomer-nomer / kode error

Struktur Bahasa Pemrograman, Modul 4,


11
@SUARGA
1. Character set
• Bahasa C memakai kode ASCII (American
Standard Code for Information Interchange)
• Setiap huruf/simbol karakter adalah 8-bit,
disimpan dalam 1 byte memory/storage.
• huruf A = 0100 0001 = hex(41) = 65 desimal
• huruf a = 0110 0001 = hex(61) = 97 desimal
• dsb
2. Keywords
• Kata yang merupakan instruksi dari C:
• tidak boleh dipakai sebagai nama variabel

Struktur Bahasa Pemrograman, Modul 4,


13
@SUARGA
3. Tipe data dasar
• bilangan bulat int short int long int unsigned int
• bilangan biasa float double long double
• karakter char
• tanpa nilai void
• logic boolean

• Ukuran dari setiap tipe data ini antara lain adalah:

• char usually 8-bits (1 byte)


• int usually the natural word size for a machine or OS (e.g., 16,
32, 64 bits)
• short int at least 16-bits
• long int at least 32-bits
• float usually 32-bits
• double usually 64-bits
• long double usually at least 64-bits
• boolean at least 1-bit
Struktur Bahasa Pemrograman, Modul 4,
14
@SUARGA
Tipe data bentukan
• (1) enumerasi: daftar objek/nilai yang memperoleh nilai integer
• enum {FALSE, TRUE }; //numerasi, FALSE=0, TRUE=1
• enum {RED=2, GREEN, BLUE, YELLOW}; //RED=2,GREEN=3,BLUE=4

• (2) array / larik, kumpulan data sejenis
• int vektor[10]; // vektor integer dgn 10 elemen
• int matrik[4][5]; // matriks integer 4 baris, 5 kolom

• (3) record, kumpulan data tidak sejenis
• struct pribadi {
• char nama[20];
• char alamat[30];
• int umur;
• char jkel;
• }
• struct pribadi Anton; //Anton memiliki data pribadi
Struktur Bahasa Pemrograman, Modul 4,
15
@SUARGA
4. Operator
• arithmetic: + - * / %
• assignment : =
• augmented assignment: +=, -=, *=, /=, %=, &=, |=, ^=, <<=, >>=
• bitwise logic: ~, &, |, ^ x += 2; x = x + 2;
• bitwise shifts: <<, >>
• boolean logic: !, &&, ||
• conditional evaluation: ? :
• equality testing: ==, !=
• calling functions: ( )
• increment and decrement: ++, --
• member selection: ., ->
• object size: sizeof
• order relations: <, <=, >, >=
• reference and dereference: &, *, [ ]
• sequencing: ,
• subexpression grouping: ( )
• type conversion: (typename)

Struktur Bahasa Pemrograman, Modul 4,


16
@SUARGA
5. Input-Output
• Instruksi input-output: perlu pustaka #include <stdio.h>

• menampilkan karakter : putchar(var-char);
• menampilkan string: puts( var-string );
• menampilkan memakai format : printf(“format”, var);
• format : %d - decimal
• %o - oktal
• %x - hexadecimal
• %u - unsigned
• %c - karakter tunggal
• %s - string
• %e - bilangan biasa, scientific notation
• %f - float number
• %g - format umum angka biasa

• membaca karacter : var-char = getchar();
• membaca string : gets(var-string);
• membaca dengan format : scanf(“format”, var);

Struktur Bahasa Pemrograman, Modul 4,


17
@SUARGA
6. Seleksi (two-way)
• (b) Instruksi seleksi / pemilihan:

• Bentuk dengan satu kondisi dan dua alternatif, bila kondisi benar maka pilih
alternatif pertama selain itu pilih alternatif kedua:

• if (kondisi) pernyataan-1;
• else pernyataan-2;

• Apabila ada n kondisi maka ada (n+1) pilihan:

• if (kondisi-1) pernyataan-1;
• else if (kondisi-2) pernyataan-2;
• else if (kondisi-3) pernyataan-3;
• else pernyataan-4;

Struktur Bahasa Pemrograman, Modul 4,


18
@SUARGA
Seleksi (multi-way)
switch(ekspressi) {
case const-1 : pernyataan-1;
break;
case const-2 : pernyataam-2;
break;
...
default : pernyataan-n
}

Struktur Bahasa Pemrograman, Modul 4,


19
@SUARGA
7. Perulangan
• Bentuk while, akan melaksanakan instruksi
berulang kali selama kondisi benar.
while (kondisi) {
.. instruksi ..
}
• Bentuk do..while mirip dengan while
do {
.. instruksi ..
} while (kondisi);
• Bentuk for
for (awal; kondisi; perubahan) {
.. instruksi ..
}

Struktur Bahasa Pemrograman, Modul 4,


20
@SUARGA
8. Operasi File
• Dalam bahasa C setiap file harus di-deklarasikan, sintaksis-nya :

• FILE *finput, *foutput;

• Setelah itu file harus di-buka sebelum digunakan:

• var-file = fopen(“directory”,”{r, w, a}”);


• dimana : r = read, baca data
• w = write, rekam data awal
• a = append, tambah data ke dalam file

• finput = fopen(“D:\data\..\datamhs.dat”,”r”);

Struktur Bahasa Pemrograman, Modul 4,


21
@SUARGA
• Merekam:
fprintf(var-file, “format”, var-1, var-2, ...);

• dimana :
var-file adalah pointer file (foutput)
“format” adalah format data, %s, %c, %f. %d dsb
var-1, var-2, ... adalah variabel yang direkam
• Membaca: fscanf(var-file, “format”, var-1, ..., var-6);
• Menutup: fclose(var-file) atau fcloseall();

Struktur Bahasa Pemrograman, Modul 4,


22
@SUARGA
• Ketika melakukan pembacaan maka akhir-file harus dapat
dideteksi, bila false berarti data masih ada dan bila true berarti
akhir file sudah ditemukan:

while(!feof(var-file)) {
fscanf(var-file, ...);
...
}
fclose(var-file);

• Mencetak laporan ke Printer:
#include <stdio.h>
main() {
FILE *printer;
printer = fopen(“LPT1:”, “w”);
... ...
fclose(printer);
}

Struktur Bahasa Pemrograman, Modul 4,


23
@SUARGA
9. Fungsi / Prosedur
type namaFungsi(type para-1, ..)
{
//deklarasi var lokal
..
.. statement ..
return(var lokal);
}

• Fungsi matematis: sin(), cos(), tan(), asin(), acos(),


atan(), log(), log10(), exp(), pow(), sqrt(), abs(),
floor(), ceil(), hypot(), sinh(), cosh(), tanh()
Struktur Bahasa Pemrograman, Modul 4,
24
@SUARGA
Contoh Program C
• (1) Buatlah sebuah program C yang menerima 5 buah angka bulat
positif, kemudian mencari angka terbesar max, dan menampilkan
semua angka serta selisihnya dengan nilai max.

Algoritma :
1. Bentuk larik angka[5]
2. Mula-mula max = 0
3. Lakukan perulangan 5 kali, dengan i :
- masukkan angka[i]
- bila angka[i] > max maka max = angka[i]
4. Tampilkan angka max
5. Lakukan perulangan untuk i = 1 s/d 5
- tampilkan angka[i, max-angka[i]]
6. Selesai.

Struktur Bahasa Pemrograman, Modul 4,
25
@SUARGA
/*ContohC.c : Contoh program C */
#include <stdio.h>
int angka[5], maxs, i;
char ch;
int main()
{
maxs = 0;
/* memasukkan 5 angka */
puts("Masukkan 5 angka bulat positif : ");
for (i=0; i<5; i++) {
scanf("%d", &angka[i]);
if (angka[i] > maxs)
maxs = angka[i];
}

Struktur Bahasa Pemrograman, Modul 4,


26
@SUARGA
/* mencetak hasil */
printf("Angka maximum = %d\n", maxs);
puts("angka selisih\n");
for (i=0; i<5; i++) {
printf("%d %d\n", angka[i], maxs-angka[i]);
}
puts("Selesai");
ch = getchar();
return 0;
}
Masukkan 5 angka bulat positif :
35
65
23
67
22
Angka maximum = 67
angka selisih
35 32
65 2
23 44
67 0
22 45
Selesai

--------------------------------
Process exited after 16.23 seconds with return value 0
Press any key to continue . . .

Struktur Bahasa Pemrograman, Modul 4,


29
@SUARGA
Contoh Program C
• (2) Buat sebuah program C, untuk menghitung gaji karyawan,
dimana diperlukan data input: nama karyawan, golongan gaji,
total jam kerja. Outputnya adalah tampilan seperti berikut ini:
• «Gaji yang diterima saudara : ....nama.... adalah Rp. ...gaji...»
• Gaji/upah pokok berdasarkan golongan adalah: Gol A =
Rp.15000, Gol B=Rp.20000, Gol C = Rp.30000 dan Gol D = Rp.
40000.
• Apabila total jam kerja-nya lebih dari 150 jam, maka akan
ditambahkan upah lembur sebesar (jam kerja - 150) * 125% *
upah pokok
//GajiKaryawanC.cc
#include <stdio.h>
#include <string.h>

int main()
{
float gaji, total, jamKerja, lembur, upah;
char nama[20];
char golongan;
int off;

puts("Masukkan nama karyawan : ");


gets(nama);
puts("Masukkan golongan-nya : ");
golongan = getchar();
puts("Masukkan jam kerjanya : ");
scanf("%f",&jamKerja);
switch(golongan) {
case 'A' : upah = 15000.0; break;
case 'B' : upah = 20000.0; break;
case 'C' : upah = 30000.0; break;
case 'D' : upah = 40000.0; break;
default : { puts("Golongan-nya salah!");
upah = 0.0; }
}

if (jamKerja > 150) {


lembur = (jamKerja - 150)*upah*1.25;
gaji = 150*upah;
}
else {
lembur = 0.0;
gaji = jamKerja*upah;
}
total = gaji + lembur;
printf("Gaji yang diterima saudara : %s",nama);
printf(" adalah Rp. %8.2f\n", total);

off = getchar();
return 0;
}
Contoh Run
Masukkan nama karyawan :
Syamsuddin
Masukkan golongan-nya :
A
Masukkan jam kerjanya :
80
Gaji yang diterima saudara : Syamsuddin adalah Rp. 1200000.00

--------------------------------
Process exited after 14.54 seconds with return value 0
Press any key to continue . . .
Sejarah C++
• Sejak bahasa C diperkenalkan maka banyak
pemrogram aplikasi menggunakan bahasa ini untuk
membuat aplikasi-aplikasi yang bagus seperti dBase,
Lotus, dsb. Bahasa C kemudian di-standarisasi oleh
ANSI pada tahun 1983.
• Seorang programmer ulung yang bekerja pada AT&T
Bell Laboratories bernama Bjarne Stroustrup pada
tahun 1980-an memiliki proyek software yang cukup
besar, beliau merasa bahwa bahasa C memiliki
keterbatasan untuk proyek pemrograman berskala
besar (misalnya diatas 25 ribu baris).

9/10/2014 Algoritma Pemrograman,@SUARGA 38


Sejarah C++
• Bjarne kemudian menambahkan konsep OOP
(Object Oriented Programming) kedalam C, dan
menambahkan instruksi-instruksi baru yang lebih
simple. Perluasan bahasa C ini diberi nama “C with
classes” oleh Bjarne kemudian oleh Rick Mascitti
disebut bahasa C++ pada 1983, sebagai indikator
bahwa bahasa ini merupakan perluasan dari
bahasa C.
• Sistem operasi Windows dari MicroSoft dibangun
dengan memakai C++ sebagai bahasa utama.
9/10/2014 Algoritma Pemrograman,@SUARGA 39
9/10/2014 Algoritma Pemrograman,@SUARGA 40
Sisi Imperatif C++
1. Seperti C, C++ juga menggunakan character
set ASCII.
2. Keywords C++ yang sama dgn di bahasa C
auto const double float int short struct unsigned
break continue else for long signed switch void
case default enum goto register sizeof typedef volatile
char do extern if return static union while
Keyword C++
Keywords yang tidak ada dalam C:
• asm dynamic_cast namespace reinterpret_cast try
• bool explicit new static_cast typeid
• catch false operator template typename
• class friend private this using
• const_cast inline public throw virtual
• delete mutable protected true wchar_t
C++ reserved words
C++ header file
• <cassert> <assert.h>
• <cctype> <ctype.h>
• <cerrno> <errno.h>
• <cfloat> <float.h>
• <ciso646> <iso646.h>
• <climits> <limits.h>
• <clocale> <locale.h>
• <cmath> <math.h>
• <csetjmp> <setjmp.h>
• <csignal> <signal.h>
• <cstdarg> <stdarg.h>
• <cstddef> <stddef.h>
• <cstdio> <stdio.h>
• <cstdlib> <stdlib.h>
• <cstring> <string.h>
• <ctime> <time.h>
• <cwchar> <wchar.h>
• <cwctype> <wctype.h>
• <iostream>
• <fstream>
3. Tipe data dan Variabel
Tipe Data Dasar
• Tipe data yang secara otomatis disediakan
oleh setiap bahasa pemrograman, antara lain:
– Bilangan bulat (integer)
– Bilangan tidak bulat / biasa
– Bilangan tetap (konstan)
– Karakter
– Logik

9/10/2014 Algoritma Pemrograman, @SUARGA 47


Bilangan bulat
• Bilangan atau angka yang tidak memiliki titik desimal
atau tidak ada pecahan, seperti: 10, +255, -1024,
+32767.
• Tipe dituliskan sebagai : integer atau int
• Jangkauan nilai : bergantung pada implementasi
perangkat keras komputer, misalnya dari -32768 s/d
+32767, untuk algoritma tidak kita batasi.
• Operasi aritmetik : tambah + , kurang - , kali * , bagi
/, sisa hasil bagi %
• Operasi pembandingan : lebih kecil < , lebih kecil
atau sama < =, lebih besar > , lebih besar atau sama >
=, sama = atau == , tidak sama ><, atau < > atau !=
9/10/2014 Algoritma Pemrograman, @SUARGA 48
Bilangan tidak bulat / biasa
• Bilangan atau angka yang bisa memiliki titik
desimal atau pecahan, dan ditulis sebagai: 235.45,
+1023.55, -987.3456 atau dalam notasi ilmiah
seperti: 1.245E+03, 7.45E-02, +2.34E-04,
-5.43E+04, dsb.
• Tipe dituliskan sebagai : real atau float
• Jangkauan nilai : bergantung pada implementasi
perangkat keras komputer, misalnya dari -2.9E-39
s/d +1.7E+38, untuk algoritma tidak kita batasi.
• Operasi aritmatik dan pembandingan juga berlaku
bagi bilangan biasa.
9/10/2014 Algoritma Pemrograman, @SUARGA 49
Bilangan tetap / konstan
• Bilangan tetap (const) adalah tipe bilangan
baik bernilai bulat maupun tidak yang nilainya
tidak berubah selama algoritma dilaksanakan.
• Tipe dituliskan sebagai : const
• Jangkauan nilai meliputi semua bilangan yang
mungkin
• Contoh: pi = 3.14152

9/10/2014 Algoritma Pemrograman, @SUARGA 50


Karakter (Character)
• Karakter adalah data tunggal yang mewakili semua
huruf, simbol baca, dan juga simbol angka yang tidak
dapat dioperasikan secara matematis, misalnya: ‘A’, ‘B’,
… , ‘Z’, ‘a’, ‘b’, …, ‘z’, ‘?’, ‘!’, ‘:’, ‘;’ dst.
• Tipe dituliskan sebagai : char
• Jangkauan nilai meliputi semua karakter dalam kode
ASCII, atau yang tertera pada setiap tombol keyboard.
• Operasi pembandingan dapat dilakukan dan dievaluasi
menurut urutan kode ASCII, sehingga huruf ‘A’ (Hex
41) sebenarnya lebih kecil dari huruf ‘a’ (Hex 61).

9/10/2014 Algoritma Pemrograman, @SUARGA 52


Logik (Logic)
• Tipe data logik adalah tipe data yang digunakan
untuk memberi nilai pada hasil pembandingan,
atau kombinasi pembandingan.
• Tipe dituliskan sebagai : boolean
• Jangkauan nilai ada dua: true (T) dan false (F)
• Contoh: 45 > 56 hasilnya false, Amir < Husni
hasilnya true
• Ada beberapa operasi untuk data jenis logik,
antara lain: and, or, dan not

9/10/2014 Algoritma Pemrograman, @SUARGA 53


Peubah (Variable)
• Variabel adalah suatu nama yang diberikan
kepada suatu data, sehingga bisa mewakili
data, seperti: nama, alamat, umur, nilai_ujian,
no_mhs, dsb.
• Pada dasarnya setiap orang bebas memilih
nama untuk variabel yang akan digunakan
dalam algoritma/program-nya.
• Namun harus mengikuti suatu aturan antara
lain sebagai berikut:
9/10/2014 Algoritma Pemrograman, @SUARGA 54
Aturan Nama Variabel
• Harus dimulai dengan abjad, tidak boleh
dengan angka atau simbol
• Tidak boleh ada spasi diantaranya
• Jangan menggunakan simbol-simbol yang bisa
membingungkan seperti titik dua, titik koma,
koma, tanda tambah, dsb.
• Sebaiknya memiliki arti yang sesuai dengan
elemen data
• Sebaiknya tidak terlalu panjang
9/10/2014 Algoritma Pemrograman, @SUARGA 55
Contoh nama variabel
• Contoh nama variable yang benar : Nama,
Alamat, Nilai_Ujian, no_mhswa, nilai_x1
• Contoh nama variable yang salah : 4XYZ, x 1,
IP rata, Var:+xy,458;

9/10/2014 Algoritma Pemrograman, @SUARGA 56


4. Operator
• Sama dengan operator C
• Operator digunakan untuk melakukan operasi
terhadap variabel atau nilai, antara lain:
• Operator aritmetik: + - * /
• Operator relasional: > >= == <= < !=
• Operator logik : and (&&), or (||), not (!)
5. Input-Output
1. #include <iostream>
2. Output: cout << variabel << «string»
3. Input: cin >> variabel
6. Instruksi Seleksi
• if (syarat) statement-1
else statement-2
switch(variabel) { case-1: stmt-1;break; case-2: stsmt-2; break;
case-3: stmt-3; break; ... default: stmt-n }
7. Instruksi Perulangan
8. Operasi File
• #include <fstream.h> //header file
• ifstream fileIn; //input file stream
• ofstream fileOut; //output file stream
• fileIn.open(«nama file>); //buka input file
• fileIn >> next; //baca
• fileOut.open(«nama file»); //buka output file
• fileOut << next; //rekam
• fileIn.close() ; //tutup input file
• fileOut.close(); //tutup output file
9. Pembuatan Fungsi
Contoh Fungsi
Contoh Fungsi
Latihan
• Antara C dan C++ banyak persamaan, dimana C++
lebih luas dari C, karena menawarkan orientasi objek
(Object Oriented)
• Berdasarkan 9 elemen utama bahasa program
bandingkanlah C dengan C++ !!
• Karena anda telah mempelajari C++ maka sebagai
latihan ubahlah contoh program (1) dan (2) dari
bahasa C menjadi program C++
• Lakukan “compile”dalam C++
• Run program, masukkan data contoh, bandingkan
dengan hasil dari contoh program C pada slide
sebelumnya
Struktur Bahasa Pemrograman, Modul 4,
69
@SUARGA

Anda mungkin juga menyukai