pemrograman dasar c - andiwre.itmaranatha.organdiwre.itmaranatha.org/download/dasprog/minggu 1 -...

34
Pemrograman Dasar C Pemrograman Dasar C Minggu 1: Minggu 1: Pengenalan C Programming Pengenalan C Programming

Upload: ngotu

Post on 01-Feb-2018

227 views

Category:

Documents


0 download

TRANSCRIPT

Pemrograman Dasar CPemrograman Dasar C

Minggu 1:Minggu 1:Pengenalan C ProgrammingPengenalan C Programming

Sejarah Bahasa CSejarah Bahasa C

Pencipta: Dennis M. Ritchie dan Brian W. Pencipta: Dennis M. Ritchie dan Brian W. Kernighan (awal 1970)Kernighan (awal 1970)

Pada awalnya berkembang di UNIX (90% Pada awalnya berkembang di UNIX (90% System Operasi UNIX dalam C)System Operasi UNIX dalam C)

Tahun 1986 dikembangkan superset C yang Tahun 1986 dikembangkan superset C yang berubah menjadi C++berubah menjadi C++

Standard CStandard C

Definisi Kernighan & Ritchie (K&R)Definisi Kernighan & Ritchie (K&R) ANSI-C – ANSI-C – standard yang akan kita pakaistandard yang akan kita pakai Definisi AT&T (superset C, C++)Definisi AT&T (superset C, C++) Versi pada PC:Versi pada PC:

– Lattice CLattice C– Microsoft C/Microsoft Quick CMicrosoft C/Microsoft Quick C– Turbo C/Borland C++Turbo C/Borland C++– Visual StudioVisual Studio

Aplikasi dalam Bahasa CAplikasi dalam Bahasa C

System Operasi dan Program-Program System Operasi dan Program-Program SystemSystem

Pemrograman HardwarePemrograman Hardware Pembuatan Tool KitPembuatan Tool Kit Program Aplikasi (dBase, WordStar, Program Aplikasi (dBase, WordStar,

Lotus123)Lotus123)

IstilahIstilah

BlokBlok: sekumpulan kalimat C yang ditulis di : sekumpulan kalimat C yang ditulis di antara { dan }antara { dan }

DefinisiDefinisi: memberitahukan sifat (property) : memberitahukan sifat (property) objek dan sekaligus mengalokasikan objek dan sekaligus mengalokasikan memori untuk objekmemori untuk objek

DeklarasiDeklarasi: memberitahukan sifat (property) : memberitahukan sifat (property) objek (terutama berkaitan dengan tipe)objek (terutama berkaitan dengan tipe)

InisialisasiInisialisasi: memberikan nilai objek: memberikan nilai objek

IstilahIstilah

Deklarasi GlobalDeklarasi Global: deklarasi yang berlaku : deklarasi yang berlaku dalam satu unit translasi (file)dalam satu unit translasi (file)

Deklarasi LokalDeklarasi Lokal: deklarasi yang hanya : deklarasi yang hanya berlaku dalam blok tempat deklarasiberlaku dalam blok tempat deklarasi

ObjekObjek: daerah memori yang bernama (sama : daerah memori yang bernama (sama dengan variabeldengan variabel

LvalueLvalue: ekspresi yang mereferensi suatu : ekspresi yang mereferensi suatu objek (nilai sebelah kiri assignment)objek (nilai sebelah kiri assignment)

IstilahIstilah

PrototypePrototype: deklarasi fungsi, menyatakan : deklarasi fungsi, menyatakan nama, tipe return value, nama dan tipe nama, tipe return value, nama dan tipe parameter formal (argumen)parameter formal (argumen)

BodyBody: realisasi dari fungsi: realisasi dari fungsi ScopeScope: daerah program tempat suatu nama : daerah program tempat suatu nama

dikenaldikenal

Komputer dan ProgramnyaKomputer dan Programnya

Komputer mengikuti sebuah alur dari instruksi Komputer mengikuti sebuah alur dari instruksi data yang tepat (‘program’) untuk memproses data yang tepat (‘program’) untuk memproses informasi (‘data’) dan mengambil keputusan.informasi (‘data’) dan mengambil keputusan.

Komputer dan ProgramnyaKomputer dan Programnya

ProgrammingProgramming– Merupakan urutan instruksi:Merupakan urutan instruksi:

» KonsepKonsep» DesainDesain» ImplementasiImplementasi» VerifikasiVerifikasi

– Sebagian besar dari ini adalah kegiatan tanpa Sebagian besar dari ini adalah kegiatan tanpa menggunakan keyboard.menggunakan keyboard.

Programming Tingkat Rendah & Programming Tingkat Rendah & TinggiTinggi

Tingkat terendah: Kode MesinTingkat terendah: Kode Mesin– Dapat langsung diproses, bentuk bilangan BinerDapat langsung diproses, bentuk bilangan Biner– Contoh: 10001011 01100111 10011011 11000111Contoh: 10001011 01100111 10011011 11000111

Tingkat rendah berikutnya: AssemblerTingkat rendah berikutnya: Assembler– Istilah yang merepresentasikan kode mesinIstilah yang merepresentasikan kode mesin

mov al,90hmov al,90hinc axinc axjnz loop1jnz loop1

– Bisa dibaca, lambat untuk dibuat, cepat diproses, Bisa dibaca, lambat untuk dibuat, cepat diproses, spesifik untuk prosesor tertentu (Intel, Motorola dll)spesifik untuk prosesor tertentu (Intel, Motorola dll)

Programming Tingkat Rendah & Programming Tingkat Rendah & TinggiTinggi

Tingkat Tinggi: Pascal, C, Fortran, C++, Tingkat Tinggi: Pascal, C, Fortran, C++, Java, C#Java, C#– Satu statement sama dengan banyak operasi Satu statement sama dengan banyak operasi

kode mesinkode mesinans = a/(b*24)ans = a/(b*24)

– Dapat dipahami manusia, cepat menulisnya, Dapat dipahami manusia, cepat menulisnya, tidak efisien (?) dalam hal ukuran kode dan tidak efisien (?) dalam hal ukuran kode dan kecepatan proses, dapat dipindahkan antar kecepatan proses, dapat dipindahkan antar prosessors.prosessors.

Programming Tingkat Rendah & Programming Tingkat Rendah & TinggiTinggi

Tingkat Lebih Tinggi: Logic Programming Tingkat Lebih Tinggi: Logic Programming (Prolog) dan Functional Programming (Prolog) dan Functional Programming (Haskell)(Haskell)– Sangat ringkasSangat ringkas– Sulit dipelajari, penekanan pada iterasiSulit dipelajari, penekanan pada iterasi– Konsepnya sama sekali berbeda dengan Konsepnya sama sekali berbeda dengan

pemrograman lainnyapemrograman lainnya

Kenapa C?Kenapa C?

Pascal:Pascal:– Mempelajari bahasa, ketat, bersahabat untuk Mempelajari bahasa, ketat, bersahabat untuk

pembaca.pembaca. Fortran:Fortran:

– Tidak bersahabat, baik untuk bilangan Tidak bersahabat, baik untuk bilangan kompleks.kompleks.

BASIC:BASIC:– Mudah dipelajari, dapat tidak efisienMudah dipelajari, dapat tidak efisien

Kenapa C?Kenapa C?

C:C:– Cukup cepat dipelajari, tidak mudah dibaca.Cukup cepat dipelajari, tidak mudah dibaca.– Tidak seketat PascalTidak seketat Pascal– Kompilernya tersedia untuk semua jenis komputerKompilernya tersedia untuk semua jenis komputer

C++, Java, C#:C++, Java, C#:– Orientasi objek, konsep yang sulit untuk pemulaOrientasi objek, konsep yang sulit untuk pemula– Tidak seluas C dalam penggunaanTidak seluas C dalam penggunaan– Mudah dipelajari setelah belajar CMudah dipelajari setelah belajar C

PerencanaanPerencanaan

Perencanaan yang baik dibutuhkan pada Perencanaan yang baik dibutuhkan pada program untuk:program untuk:– Benar-benar melakukan sesuatu yang Benar-benar melakukan sesuatu yang

diinginkan.diinginkan.– Mudah mencari kesalahan.Mudah mencari kesalahan.– Memudahkan orang lain untuk mengerti dan Memudahkan orang lain untuk mengerti dan

mengubah.mengubah.– Waktu desain yang efisien juga untuk ukuran Waktu desain yang efisien juga untuk ukuran

dan waktu run.dan waktu run.

5 Langkah Membuat Program5 Langkah Membuat Program

Analisis Persyaratan:Analisis Persyaratan:– Apa yang akan dilakukan programApa yang akan dilakukan program– Apa yang dibutuhkan untuk melakukan hal tsbApa yang dibutuhkan untuk melakukan hal tsb

Spesifikasi:Spesifikasi:– Menulis dengan tepat apa yang harus dilakukan Menulis dengan tepat apa yang harus dilakukan

programprogram Desain:Desain:

– Menentukan bagaimana melakukannyaMenentukan bagaimana melakukannya

5 Langkah Membuat Program5 Langkah Membuat Program

Implementasi (koding)Implementasi (koding)– Mengubah desain menjadi kodeMengubah desain menjadi kode– Didokumentasikan dengan baik / diberi Didokumentasikan dengan baik / diberi

komentar dengan baikkomentar dengan baik Verifikasi:Verifikasi:

– Apakah memenuhi persyaratan/spesifikasi?Apakah memenuhi persyaratan/spesifikasi?

Studi KasusStudi Kasus

Analisa Persyaratan:Analisa Persyaratan:– Menghitung tenaga listrik yang dihasilkan pada Menghitung tenaga listrik yang dihasilkan pada

sebuah beban listriksebuah beban listrik– Mengambil voltase dan arus untuk Mengambil voltase dan arus untuk

menghasilkan tenaga listrikmenghasilkan tenaga listrik– Dilaksanakan menggunakan “ANSI C” pada Dilaksanakan menggunakan “ANSI C” pada

PCPC

Studi KasusStudi Kasus

Spesifikasi:Spesifikasi:– Input:Input:

» Voltase berkisar 0 sampai 1000 VoltVoltase berkisar 0 sampai 1000 Volt» Arus 0 sampai 10 AmpereArus 0 sampai 10 Ampere

– Output:Output:» Power dalam Watts Power dalam Watts

– Algoritma:Algoritma:» Power = Voltase X ArusPower = Voltase X Arus

Studi KasusStudi Kasus

Seperti Resep Memasak: sebuah daftar dari Seperti Resep Memasak: sebuah daftar dari bumbu dan metodanyabumbu dan metodanya

Program KitaP = V x I

voltase

aruspower

Studi KasusStudi Kasus Desain: Metode Desain Top-DownDesain: Metode Desain Top-Down

– Bagi dan Kuasai: dibagi-bagi dalam bagian-bagian Bagi dan Kuasai: dibagi-bagi dalam bagian-bagian yang bisa diatur.yang bisa diatur.

– Dimulai dari skala makro kebawah kearah skala mikro:Dimulai dari skala makro kebawah kearah skala mikro:» Mulai dari tugas keseluruhanMulai dari tugas keseluruhan» Bagi dalam bagian tugas (dekomposisi) – lebih detailBagi dalam bagian tugas (dekomposisi) – lebih detail» Dipartisi untuk independen (tugas yang berdiri sendiri dengan Dipartisi untuk independen (tugas yang berdiri sendiri dengan

interaksi sederhana dari luar)interaksi sederhana dari luar)» Ulangi sampai tugas tingkat rendah dapat dipahami dengan Ulangi sampai tugas tingkat rendah dapat dipahami dengan

mudah atau simpelmudah atau simpel» Identifikasi bagian tugas yang diulang / sangat mirip: buatlah Identifikasi bagian tugas yang diulang / sangat mirip: buatlah

satu tugas yang sifatnya lebih umum.satu tugas yang sifatnya lebih umum.

Studi KasusStudi Kasus

Desain: Metode Desain Top-Down (cont’d)Desain: Metode Desain Top-Down (cont’d)– Membuat pengaturan hirarkiMembuat pengaturan hirarki

Studi Kasus ini sederhana – bagi menjadi 3 Studi Kasus ini sederhana – bagi menjadi 3 bagian blok:bagian blok:– (1) Meminta input(1) Meminta input– (2) Menghitung power(2) Menghitung power– (3) Menampilkan hasil(3) Menampilkan hasil

Minta Input Hitung Power Display HasilVI P

Studi KasusStudi Kasus

Struktur:Struktur:– Komputer pada umumnya Komputer pada umumnya

mesin pemrosesan yang mesin pemrosesan yang sekuential (berurutan)sekuential (berurutan)

» Berikan – LakukanBerikan – Lakukan– Pada tingkat kode mesin Pada tingkat kode mesin

operasinya berupa operasi operasinya berupa operasi yang sekuensial linieryang sekuensial linier

– Struktur dari desain kita Struktur dari desain kita juga sekuensial linierjuga sekuensial linier

MemintaInput

Hitung Power

TampilkanOutput

Bahasa LogisBahasa Logis Setelah selesai, gambarkan operasi tiap modul dalam bahasa biasa:Setelah selesai, gambarkan operasi tiap modul dalam bahasa biasa:

– 1. Minta voltase terminal1. Minta voltase terminal– 2. Mengumpulkan input untuk voltase2. Mengumpulkan input untuk voltase– 3. Minta arus input3. Minta arus input– 4. Mengumpulkan input untuk arus4. Mengumpulkan input untuk arus– 5. Menghitung Power: V x I5. Menghitung Power: V x I– 6. Mengumumkan hasil akan datang6. Mengumumkan hasil akan datang– 7. Menampilkan hasil7. Menampilkan hasil

Tampilkan dalam bentuk flow chart atau kode pseudoTampilkan dalam bentuk flow chart atau kode pseudo Melalui langkah ini adalah penting untuk produksi yang cepat dari Melalui langkah ini adalah penting untuk produksi yang cepat dari

program yang handal dan akurat.program yang handal dan akurat.

ImplementasiImplementasi

Pada intinya, kode dari bawah ke atasPada intinya, kode dari bawah ke atas Kodekan masing-masing sub-modul Kodekan masing-masing sub-modul

terendah dulu baru keatasterendah dulu baru keatas Dapat dilihat dalam template berikut:Dapat dilihat dalam template berikut:

ImplementasiImplementasi#include <stdio.h>#include <stdio.h>

int main (void)int main (void){{

/* kode anda disini *//* kode anda disini *//* membaca voltase *//* membaca voltase *//* membaca arus *//* membaca arus *//* menghitung power *//* menghitung power *//* menampilkan hasil *//* menampilkan hasil */

return (0);return (0);}}

VariabelVariabel

Elemen penyimpanan untuk menyimpan data yang Elemen penyimpanan untuk menyimpan data yang bisa diubahbisa diubah

Selalu mempunyai Selalu mempunyai nama identifikasinama identifikasi dan dan tipetipe TipeTipe adalah klasifikasi atau pengelompokan yang adalah klasifikasi atau pengelompokan yang

mengidentifikasi tipe dari data yang dirancang mengidentifikasi tipe dari data yang dirancang untuk disimpan. Objek yang diciptakan dalam untuk disimpan. Objek yang diciptakan dalam tipetipe ini didesain untuk menampung data yang ini didesain untuk menampung data yang memenuhi peraturan spesifik dari tipe tsb.memenuhi peraturan spesifik dari tipe tsb.

VariabelVariabel Jenis-jenis tipe:Jenis-jenis tipe:

NamaNama KisaranKisaranintint +32767 ke –32767+32767 ke –32767charchar +127 ke –128+127 ke –128shortshort +32767 ke –32767+32767 ke –32767longlong +2147483647+2147483647

ke –2147483648ke –2147483648unsigned charunsigned char 0 ke +2550 ke +255unsigned shortunsigned short 0 ke +655350 ke +65535unsigned int unsigned int 0 ke +655350 ke +65535unsigned longunsigned long 0 ke 42949672950 ke 4294967295

Identifier – Nama dari SesuatuIdentifier – Nama dari Sesuatu

Dapat terbuat dari:Dapat terbuat dari:– Huruf ‘a’ – ‘z’ & ‘A’ – ‘Z’ and angka ‘0’ – ‘9’ Huruf ‘a’ – ‘z’ & ‘A’ – ‘Z’ and angka ‘0’ – ‘9’

ditambah ‘_’ tapi tidak space atau karakter ditambah ‘_’ tapi tidak space atau karakter lainnyalainnya

– C adalah Case Sensitive – ‘My_Name’ tidak C adalah Case Sensitive – ‘My_Name’ tidak sama dengan ‘my_name’sama dengan ‘my_name’

– Harus dimulai dengan karakter alfabetik tidak Harus dimulai dengan karakter alfabetik tidak angka jadi “5my_name” ilegal!angka jadi “5my_name” ilegal!

– Sampai 32 karakterSampai 32 karakter– Hindari kata kunci yang khususHindari kata kunci yang khusus

Identifier – Nama dari SesuatuIdentifier – Nama dari Sesuatu Mana yang ilegal?Mana yang ilegal?

– ‘‘results of my calculation’results of my calculation’– ‘‘2nd$voltage’2nd$voltage’– ‘‘ToTal_CapaCitaNce’ToTal_CapaCitaNce’– ‘‘Exam-Results’Exam-Results’

Buatlah nama yang berarti (fungsinya) tapi tidak Buatlah nama yang berarti (fungsinya) tapi tidak terlalu panjang atau diketik berulangterlalu panjang atau diketik berulang

Untuk studi kasus kita dipakai:Untuk studi kasus kita dipakai:powerpower voltsvolts currentcurrent

Penggunaan seperti:Penggunaan seperti:power = volts * current;power = volts * current;

Deklarasi VariabelDeklarasi Variabel

Semua (termasuk variabel) Semua (termasuk variabel) harusharus dideklarasikan sebelum dipakai, jika tidak dideklarasikan sebelum dipakai, jika tidak dikatakan ‘tidak diketahui’!dikatakan ‘tidak diketahui’!

VariabelVariabel adalah penyimpan data yang adalah penyimpan data yang dapat kita ubah selama run dari programdapat kita ubah selama run dari program

Sintaks:Sintaks:nama-tipe Identifier;nama-tipe Identifier;nama-tipe Identifier = n, Identifier = n nama-tipe Identifier = n, Identifier = n

…;…;

Studi KasusStudi Kasus Contoh untuk studi kasus:Contoh untuk studi kasus:

int power;int power;int volts;int volts;int current;int current;

Atau:Atau:int power, volts, current;int power, volts, current;

Atau:Atau:int power, volts = 0, current = 9;int power, volts = 0, current = 9;

PERINGATANPERINGATAN: tipe sangat penting!!!: tipe sangat penting!!!

KesimpulanKesimpulan C kemungkinan bahasa yang paling banyak C kemungkinan bahasa yang paling banyak

digunakan oleh ahli teknik (engineers)digunakan oleh ahli teknik (engineers) Perencanaan yang menyeluruh sebelum Perencanaan yang menyeluruh sebelum

implementasiimplementasi 5 tahap desain program:5 tahap desain program:

– Analisa persyaratanAnalisa persyaratan– SpesifikasiSpesifikasi– DesainDesain– ImplementasiImplementasi– Verifikasi dan TestingVerifikasi dan Testing

KesimpulanKesimpulan

Desain secara Top-Down dan implementasi Desain secara Top-Down dan implementasi “Bottom-Up”“Bottom-Up”

Prosesing sekuensial – struktur linierProsesing sekuensial – struktur linier Tipe – klasifikasiTipe – klasifikasi Identifier – nama dari sesuatuIdentifier – nama dari sesuatu Variabel – elemen penyimpan dengan sebuah tipe Variabel – elemen penyimpan dengan sebuah tipe

yang terdefinisi terlebih dahulu dan sebuah yang terdefinisi terlebih dahulu dan sebuah Identifier unikIdentifier unik

INGAT: Ukuran Penting!INGAT: Ukuran Penting!