Selasa, 10 Februari 2015

pertemuan ke dua (algoritma dan struktur data bahasa C operator)

PERTEMUAN KE DUA
ALGORITMA DAN STRUKTUR DATA BAHASA C
OPERATOR

Sejarah bahasa C
Bahasa C dirancang  oleh Dennis Mc Allostair Ritchie, AT&T Bell labotatories, 1972.
Dirancang untuk mengembakan piranti lunak sistem.
Kernel sistem operasi UNIX ditulis kembali dengan bahasa C, 1973.
Publikasi melalui buku The C Programming Language, Brian W. Kernighan dan Dennis M. Ritchie, 1978.

C++ dan C
Berbicara tentang  C++ dan C sebagai bahasa pendahulunya, C merupakan termasuk bahasa



pemrograman tingkat menengah. Pencipta C adalah Brian W. Keninghan dan Dennis M. Ritchie pada tahun 1972. C merupakan bahasa pemrograman terstuktur yang membagi program ke dalam sejumlah blok (sub program). Tujuannya adalah untuk memudahkan dalam pembuatan dan pengembangan program. Program yang ditulis dengan C mudah sekali dipindahkan dari sutu jenis mesin ke mesin lain. Hal ini karena adanya standarisasi C yaitu ANSI (American National Standards Institute) yang menjadi acuan para pembuat compiler C.

Program C++
Program C++ dapat dibuat menggunakan sembarang editor teks maupun editor sekaligus compilernya. Program utama berekstensi (*.CPP). Pada saat kompilasi program utama bersama dengan file header (*.h) akan diterjemahkan oleh kompiler menhadi file obyek (*.OBJ). selanjutnya file obyek ini bersama-sama dengan file obyek lain dan file library (*.LIB) dikaitkan menjadi satu oleh linker. Hasilnya adalah file (*.EXE) executable.

Compiler C++
Compiler C++ yang telah beredar di pasaran antara lain Microsofr C / C++ dab Visual C++. Keduanya dari Microsoft. Sementara Borland international juga mengeluarkan Turbo C++ dan Borland C++.

Bentuk Program Dalam C++
Struktur Program C++
#include <iostream.h>
Main()
{
Std::cout<<”hello world\n”;
Return 0;
}

Baris Pertama:
#include <iostream.h>
Sebagai bagian dari proses kompilator, kompilator dari C++ menjalankan program yang dinamakan preprosesor. Preprosesor memiliki kemampuan menambahkan dan menghapus kode dari sumber, pada bagian #include memberitahukan preprosesor untuk menyertakan kode dari iostream, berkas iostream berisi deklarasi untuk berbagai fungsi yang dibutuhkan oleh perangkat lunak atau class-class yang dibutuhkan.

Baris kedua
Int main()
Pernyataan ini mendeklarasikan fungsi utama, bahwa suatu program C++ dapat berisi banyak fungsi, yang harus selalu memiliki sebuah fungsi utama (main function), Fungsi adalah modul yang berisi kode-kode untuk menyelesaikan masalah-masalah tertentu. Kata void menandakan fungsi main tidak bertipe.

Baris ketiga:
{
Kurung kurawal buka menandakan awal program.

Baris keempat:
Std::cout<<”Hello world\n”;
Cout adalah sebuah object dari pustaka perangkat lunak standart C++ yang digunakan untuk mencetak string ke piranti output standart, yang biasnya adalah layar komputer, compiler menghubungkan kode dari pustaka perangkat lunak standart itu dengan kode yang telah ditulis untuk mendapatkan hasil executable.
\n
Adalah format modifier yang digunakan untuk berganti baris setelah menampilkan string, jika ada cout lain pada  program tersebut, maka string yang menyertainya akan dituliskan pada baris bawahnya,
Baris kelima:
}
Kurung kurawal tutup menandakan akhir program.
Hal yan menjadi catatan penting di sini bahwa program C++ bersifat Case Sensitive, artinya huruf besar dan kecil dianggap beda.

FILE HEADER
Pada contoh diatas, iostream.h disebut file header tersebut dierlukan agar perintah cout bisa dijalankan. Apabila file header tersebut dihapus, maka akan terjadi eror. Untuk mengakses file header, digunakan perintah #include <file header>, atau #include “file header”. Dalam suatu program bisa jadi melibatkan lebih dari satu file header.
Catatan:
Perintah cout<<”Hello world.\n”; dapat diganti dengan printf(“Hellow world.\n”;
Akan tetapi untuk menggunakan printf diperlukan file header stdio.h

MENGHAPUS LAYAR
Dalam C++, perintah clrscr(); digunakan untuk menghapus atau membersihkan layar. Perintah ini akan bisa dijalankan setelah ditambahkan file header conio.h
#include <iostream.h>
#inlclude<conio.h>
void main()
{
Clrscr();
Cout<<”Hellow world.\n”;
}

TIPIKAL PROGRAM C
/*potongan harga untuk 3 kaleng*/
#include<stdio.h>
int main() {
float j_unit, harga, nilai;
int i;
printf(“POTONGAN HARGA SUSU\n”);
for (i=0;i<19;i++) printf(“=”);printf(“\n”);

ELEMEN BAHASA C
Karakter
Identifier
-          Keyword
-          Strandard identifier
-          Programmer-defined identifier.
Tipe data
Konstanta
Variabel

Karakter
Huruf, ABC sampai degan Z. acb sampai dengan z.
Angka, 0123456789
Karakter khusus, !”#5&’()*+,-./:;ó?[\]^_{|}~ spasi
Karakter extend, Tab horisontal, tab vertikal, form feed,  new line.

Identifier.
-          Identifier.
o   Identifier, pengenal, nama segala sesuatu.
o   Nama instruksi, nama variabel, nama tipe data, nama function.
-          Ketentuan idenfier
o   Diawali huruf atau garis bawah (underscore)
o   Diikuti huruf, angka, atau garis bawah.
o   Panjang maksimum 32 karakter (borland C++)
o   Panjang tidak dibatasi (Dev-C++)
-          Bahasa C bersifat case sensitive.
o   Huruf besar dan kecil dianggap beda.
o   Abc berbeda dengan Abc AbC ABC abC.
-          Identifier yang panjang
o   Luas_persegianjang_berwarna_biru
o   Luas_persegianjang_berwarna_biru_muda.
-          Contoh identifier yang benar.
o   luas
o   segi3
o   bilangan_1
-          Contoh identifier yang salah.
o   3com                                     diawali angka.
o   Persegi-panjang                               terdapat tanda -
o   Luas lingkaran                    dipisahkan spasi

Keyword
-          Keyword
o   Identifier yang telah diberi kegunaan ertentu dan tidak boleh diubah, hanya boleh digunakan.
1.       auto
2.       break
3.       case
4.       char
5.       const
6.       continue
7.       default
8.       do
9.       double
10.   else
11.   enum
12.   extend
13.   float
14.   for
15.   goto
16.   if
17.   int
18.   long
19.   register
20.   return
21.   short
22.   signed
23.   sizeof
24.   static
25.   stuct
26.   switch
27.   tpedef
28.   union
29.   unsigned
30.   void
31.   volatile
32.   while
contoh keyword.
int main() {
        int i = 0;
do // OK
        printf (“%d “,i++);
while (i<5);
return 0;
}
Outputnya : 0 1 2 3 4

Int main () {
Float do; //ERROR
...
}

%u
%d atau %i
%o , bilangan tak bertanda dalam sistem Oktal (0-7)
%x , bilangan tak bertanda dalam basil hexadesimal (0-F)
%f , menampilkan bilangan real dddd.ddddddd
%e atau %E , menampilkan bilangan dalam bentek sains
%g atau %G , menampilkan bilangan real dalam bentuk %f ata %E tergantung pada kepresisian data.
l (huruf L kecil) , awalan yag digunakan untuk enyatakan long int atau double. Contoh %ld untuk long int atau %lf untuk double.
%% , untuk menyatakan simbol %.


Standard identifier
-          standard identifier
o   identifier yang telah didefinisikan compiler untuk kegunaan ertentu tetapi boleh di definisi ulang.

int main () {
...
Printf(“POTONGAN HARGA SUSU\n”);//OK
...
}

Int main () {
                Float printf; //OK
...
Printf(“POTONGAN HARGA SUSU\n”); //EROR
...
}


Programmer-Defined ID.
-          Programmer-Defined Identifier.
o   Identifier yang dibat oleh pemrogram.

int main () {
                float j_unit, harga; //OK
                ...
                scanf (“%f %f, &j_unit, &harga);//OK
                printf(“POTONGAN HARGA SUSU\n”);
                ...
}

TIPE DATA
-          Tipe data
o   Jenis data yang dioleh.
o   Ilangan bulat, bilangan pecahan, karakter.

Tipe data Character, keyword char, renang nilai (GCC) -128 s.d 127
Tipe data Short integer, keyword short, rentang nilai -32.768 s.d 32767
Tipe data Integer, keyword int, rentang nilai -2.147.483.648 s.d. 2.147.483.647
Tipe data Long integer, keyword long, rentang nilai -2.147.483.648 s.d. 2.147.483.647
Tipe data Long-long integer, keyword long long, rentang nilai -9.223.372.036.854.775.808 s.d. 9.223.372.036.854.775.807.
Tipe data SP loating point, keyword float, 1.17 x e-38 s.d. 3.4 x e38.
Tipe data DP floating point, keyword double, 2.22 x e-308 s.d. 1.79 x e308

o   Tipe data karakter (char)
§  1 byte = 8 bit.
§  28 = 256 nilai ( -128 ... -1 0 1 2 ... 127 )
o   Tipe data short integer (short)
§  2 byte = 16 bit.
§  216 = 65536 nilai (-32768 ... 32767)
o   Tipe data integer (int)
§  4 byte = 32 bit.
§  216 = 4.294.967.296 nilai (--2.147.483.648 ... 2.147.483.647)
#include <stdio.h>
Int main () {
Printf(“char = %d\n”, seizeof (char));
Printf(“short = %d\n”, seizeof (short));
Printf(“int = %d\n”, seizeof (int));
Printf(“long = %d\n”, seizeof (long));
Printf(“float = %d\n”, seizeof (float));
Printf(“double = %d\n”, seizeof (double));
Printf(“long  long = %d\n”, seizeof (long long));
Printf(“long double = %d\n”, seizeof (long double));
Return 0;
}

Outputnya :
Char =1
Short = 2
Int = 4
Long = 4
Float = 4
Double = 8
Long long = 8
Long double = 12
-          Qualifier unsigned pada tipe data.
o   Tidak mengakomodasi nilai negatif
o   Seluruh daya tampung untuk bilangan positif
o   Default qualifier adalah signed.
Keyword unsigned char, rentang nilai (GCC) 0 s.d. 255.
Keyword unsigned short, rentang nilai (GCC) 0 s.d. 65.535.
Keyword unsigned int, rentang nilai (GCC) 0 s.d. 4.24.967.295.
Keyword unsigned long, rentang nilai (GCC) 0 s.d. 4.24.967.295.
Keyword unsigned long long, rentang nilai (GCC) 0 s.d. 18.446.744.073.709.551.615
-          Single precision floating number (float) verses double precision floating number (double).
#include <stdio.h>
int main() {
printf(“    123456789A123456789B\n”);
printf(“%.20f\n”, (float)22.0 / (float)7.0);
printf(“%20lf\n”, (double)22.0 / (double) 7.0);
return 0;
}
Outputnya:
   123456789A123456789B
3.14285707473754880000
3.14285714285714280000

KONSTANTA
-          Konstanta
o   Integer constant
§  Konstanta integer desimal : 125 2010
§  Konstanta integer oktal : 07 0642
§  Konstanta integer heksadesimal : 0x36 0xab5
o   Charakter constant : ‘a’ ‘1’ escape sequence
§  Escape sequence diawali dengan garis miring terbalik.
o   Floating point constant : 3.14 1.23e4
o   String constant
§  “Dev-C++ versi 4.9.9.2”
§  “algoritma\npemrograman”
-          Escape sequence
o   ES \0, nilai 0x00, karakter NUL, keterangan karakter dengan nilai ASCII = 0.
o   ES \a, nilai 0x07, karakter BEL, keterangan bunyi speaker.
o   ES \b, nilai 0x08, karakter BS, keterangan backspace (mundur ke kiri).
o   ES \f, nilai 0x0C, karakter FF, keterangan formfeed (ganti halaman).
o   ES \n, nilai 0x0A, karakter LF, keterangan Linefeed atau newline (ganti baris)
o   ES \r, nilai 0x0D, karakter CR, carriage return (keawal baris)
o   ES \t, nilai 0x09, karakter HT, keterangan tabulator horisontal.
o   ES \v, nilai 0x0B, karakter VT, keterangan tabulator vertikal.
o   ES \\, nilai 0x5C, karakter \, keterangan karakter miring kiri.
o   ES \’, nilai 0x27, karakter ‘, keterangan karakter petik-tunggal.
o   ES \”, nilai 0x22, karakter “, keterangan karakter petik-ganda.
o   ES \?, nilai 0x3F, karakter ?, keterangan karakter tanda tanya.
-          Integer constant: desimal, oktal. Heksadsimal.
#include <stdio.h>
int main () {
printf(“123 (10) = %f\n”, 123);
printf(“123 (8) = %d\n”, 0123);
printf(“123 (16) = %d\n”, 0x123);
return 0;
}
Outputnya :
123 (10) = 123
123 (8)  = 83
123 (16) = 291

VARIABEL
-          Variabel
o   Tempat menampung data
o   Harus ditentukan tipe data yang ditampung.
o   Harus dideklarasi atau didefinisi sebelum dipakai.
Data_type var1 <= int1 >, var2 <= int2 >, ... ;
unsigned int nilai_tugas;
int nilai_uts, nilai_uas;
char huruf;

float jumlah = 0.0;
char titik = ‘.’;

OPERASI DANN OPERATOR
-          Operasi : proses terhadap data
-          Operator : simbol operasi
-          Operan : data yang dioperasikan
-          Berdasarkan jumlah operan trlibat.
o   Unary operator, satu operan: ++ -- unary minus.
o   Binary operator, dua operan: + - * /
o   Ternaty operator, tiga operan : ƨ :
-          Berdasarkan jenis operasi.
o   Operator aritmatika
o   Operator relasi
o   Operator logika
o   Operator bitwise
o   Operator koma
o   Operator assignment.

Operan aritmatika
-          Simak contoh berikut 2+3, tanda + merupakan operator. Operator berupa simbol yang digunakan untuk menusun suatu expresi, dengan meibatkan satu atau lebih operan.
Operan
-          Berdasarkan jumlah operan terlibat.
o   Unary operator, satu operan : ++ -- unary minus.
§  Contoh : +1, -1
o   Binary operator, dua operan : + - * /
§  Contoh : 2+3, 5*2, 5>2.
o   Ternary operantor, tiga operan : ƨ :
§  Contoh : a>b ƨ 1 : 0
Opreasi dan Operator
-          Operator aritmatika
Simbol +, fungsi penjumlahan, contoh y+6.
Simbol -, fungsi pengurangan, contoh 2010 – tahunlahir
Simbol *, fungsi perkalian, contoh 3.14 * diameter
Simbol /, fungsi pembagian, contoh jumlahdetik / 3600
Simbol %, fungsi modulus, contoh n % 16
Simbol ++, fungsi increment, contoh x++ ++x
Simbol --, fungsi decrement, z-- --z

Fungsi Aritmatika
Fungsi sqrt(x), keterangan nilai daari akar x
Fungsi pow(x,y), keterangan nilai dari x pangkat y
Fungsi tan(x), keterangan nilai dari tangen x
Fungsi sin(x), keterangan nilai dari sin x
Fungsi cos(x), keterangn nilai dari cos x
Fungsi log (x), keterangan nilai dari loge x
Fungsi log10(x), keterangan nilai dari log 10 x
Fungsi cabs(x), keterangan nilai dari absolut x (nilai bertipe int)
Fungsi fabs(x), keterangan nilai dari absolut x (nilai bertipe double)

Contoh notasi matematika dan ekspresi dalam c atau c++
Notasi matematika (ax2 + bx + c), ekspresi C dan C++ (a * x * x + b * x + c)
Notasi matematika (  ), ekspresi C dan C++ [ sqrt(b) ]
Notasi matematika (  ), ekspresi C dan C++ [ pow (b,1.0/3) ]
Notasi matematika (  ), ekspresi C dan C++ [ (a+b)/(c+d) ]
Notasi matematika (  ), ekspresi C dan C++ [ sqrt (b*b-4*a*c) ]
Notasi matematika (  ), ekspresi C dan C++ [ Exp(x+y)/(x+y) ]
Notasi matematika ( a +  ), ekspresi C dan C++ [ a+b/fabs(m-n) ]
Notasi matematika log10 m, ekpresi C dan C++ [ log10(m) ]
Notasi matematika loge(m+n), ekspresi C dan C++ [ log(m+n) ]

#include <stdio.h>
int main () {
float x, y, z, nilai;
printf(“masukkan nilai x = “);
scan(“%f”, &x);
printf(“masukkan nilai y = “);
scan(“%f”,&y);
printf(“masukkan nilai z = “);
scan(“%f”, &z);
nilai=(2*X+3*y)*(3*z-4*y);
printf(“nilai perkalian (2x-3y)(3z-4y) = %f\n”, nilai);
fflush(stdin); getch();
return 0;
}

OPERASI DAN OPERATOR
-          Preincrement dan postincrement
-          Operator relasi
Simbol
Fungsi
Contoh
==
Sama dengan
Grade == ‘a’
!=
Tidak sama dengan
Pilih != ‘y’
<
Lebih kecil dari pada
Nilai < 56
> 
Lebih kecil dari pada
Nilai >79
<=
Lebih kecil atau sama
Usia <=17
>=
Lebih kecil atau sama
Ip >= 2.00

-          Operator logika
Simbol
Fungsi
Contoh
!
Not
!a
&&
And
(a>79)&&(a<101)
||
Or
(a<0) || (n>100)

A
B
!A
A&&B
A||B
True
True
False
True
True
True
False
False
False
True
False
True
True
False
True
False
False
True
False
False

-          Operator bitwise
Simbol
Fungsi
&
Melakukan OR terhadap dua bit
!
Melakukan AND terhadap dua bit
^
Melakukan XOR terhadap dua bit
<< 
Menggeser bit-bit ke kiri
>> 
Menggeser bit-bit ke kanan
~
Melakukan one’s complement

-          Operator koma
o   Menggabungkan sejumlah nama variabel setipe pada seklarasi atau definisi variabel.
o   Memisahkan argumen function.
o   Menyatukan dua ekspresi menjadi sebuah pernyataan.
o   Inisialisasi dan kontrol pengulangan.
-          Operator assignment
o   Nilai expression di berikan kepada variabel di kiri.
Varname = expression;
Contoh
Program
Output
#include <stdio.h>
int main(){
int a,b;
a=7;
b=9;
a=a+8;
b=a%b;
printf(“%d %d\n”,a,b);
return 0;
}
15 6

o   L-value dan R-value
§  R-value adalah nilai sebuah eksresi.
§  R-value dituliskan di kanan = .
§  L-value menyatakan tempat menampung data.
§  L-value ditulis di kiri = .
-          Compound operator
o   Assignment terbentuk var1 = var1 opr var2
o   Boleh disingkat menjadi var1 opr = var2
Assigment
Disingkat
Assigment
Disingkat
a = a + b ;
a + = b;
a = a << b ;
a << = b;
a = a – b;
a - = b;
a = a >> b;
a>> = b;
a = a * b;
a * = b;
a = a | b;
a | = b;
a = a / b;
a / = b;
a = a & b;
a % = b;
a = a % b;
a % = b;
a = a ^ b;
a ^ = b;

-          Operator precedence
o   Tingkat atau prioitas pengerjaan ooperator
o   a + b * c – d / e , (a + (b*c)) – (d/e)
-          Operator associativity
o   “arah” pengerjaan operator
o   a – b – c , (a – b) – c
Operator
Asosiativitas
Presedensi
() [] è
Kiri ke kanan
1
! ~ ++ -- - & “ (cast) sizeof
Kiri ke kanan
2
*  /   %
Kiri ke kanan
3
+ -
Kiri ke kanan
4
<< >>
Kiri ke kanan
5
< <= > >=
Kiri ke kanan
6
== !=
Kiri ke kanan
7

Pada presedensi 2 adalah operator derefence digunakan terhadap variabel pointer.

Operator
Asosiativitas
Presedensi
&
Kiri ke kanan
8
^
Kiri ke kanan
9
!
Kiri ke kanan
10
&&
Kiri ke kanan
11
||
Kiri ke kanan
12
?:
Kiri ke kanan
13
= += -= *= /=
Kanan ke kiri
14
,
Kiri ke kanan
15

Expression
-          Elemen program yang jika dievaluasi (evaluate)  akan menghasilkan nilai (value).
-          Sebuah konstanta adalah sebuah ekspresi.
-          Sebuah variabel adalah sebuah ekspresi.
-          Sebuah pemanggilan (pengaktifan function adalah sebuah ekspresi.
-          Ekspresi yang dioperasikan dengan ekspresi adalah sebuah ekspresi.
Statement  (command)
-          Elemen program yang apabila dijalankan (execute) akan menimbulkan side effect, yaitu perubahan isi memori variabel.
Perbedaan statement dan expression.
o   a = b menghasilkan nilai, bisa di print.
o   = adalah expression.
o   a = b menyebabkan isi variabel a berubah.
o   = adalah statement.
o   Assigment adalah statement dan juga expression.
§  a = b = c + 5;
konversi data
-          tipe data mencangkup 2 hal:
o   value atau nilai data.
o   Jenis oerator yang dapat dilakukan terhada nilai.
-          Tipe data integer (int)
o   Value : -10 0 3 123
o   Operasi : + - * / %
-          Tipe data floating point number (float)
o   Value : -6.0 3.14159
o   Operasi : + - * /
-          Idealnya kedua data yang dioperasikan adalah setipe, jika tidak demikian maka akan dilakukan konversi secara implisit.

#include <stdio.h
int main(){
int a = 10;
float  b = 2.34;
a = a + b;
printf(“%d\n”, a);
return 0;
}

Outputnya
12

A + b = 10 + 2.34 = 10.00 + 2.34 = 12.34, karena a hanya bisa menampung bilangan bulat maka bagian pecahan di buang.
-          Tipe casting.
o   Proses konversi tipe data sehingga data seakan-akan (berperan sebagai) bertipe data tertentu.
o   Dilakukan dengan menuliskan tipe data didalam tanda kurung dan meletakkannya di kiri data yang akan diproses.
Prepocessor directive
-          Elemen program yang akan dilaksanakan pada tahap awal proses kompilasi.
-          Diawali dengan simbol #.
-          #inlude untuk menyertakan header file.
-          #define
o   Memberi nama kepada elemen program.
o   Medeklarasi macro
o   Mendeklarasi symbolic contant.
o   #define symbolicconstant constantvalue
Contoh:
#define NILAIMAX 100
#define NILAI MIN 0
#define GARIS “-------------------“
Symbolic constant
-          Compiler menyediakan sejumlah symbolic constant
o   #include <limits.h> untuk symbolic constant CHAR_MIN, CHAR_MAX, UCHAR_MAX, SHRT_MIN, SHRT_MAX, INT_MIN, INT_MAX, UINT_MAX, LONG_MIN, LONG_MAX, ULONG_MAX.
o   #include <float.h> untuk symbolic constant FLT_MIN, FLT_MAX, DBL_MIN, DBL_MAX.

Symbolc Constant
Nilai
CHAR_MIN
-128
CHAR_MAX
127
UCHAR_MAX
255
SHRT_MIN
-32768
SHRT_MAX
32767
INT_MIN
-2147483648
INT_MAX
2147481647
UINT_MAX
4294967295
LONG_MIN
-2147483648
LONG_MAX
2147483647
ULONG_MAX
4294967295
FLT_MIN
1.175494 x e-38
FLT_MAX
3.402832 x e38
DBL_MIN
2.225074 x e-308
DBL_MAX
1.797693 x e308


Tidak ada komentar:

Posting Komentar