Repetition
Repetition adalah satu atau lebih intruksi yang diulang dalam waktu tertentu
Repetition dalam C++ ada 3 yaitu :
- For
- While
- Do-while
For
syntax :
for (inisiasi;kondisi;penambahan/pengurangan){
statement ;
}
contoh :
#include<stdio.h>
int main(){
int i,a,b
for(a=0;a<i;a++){
for(b=0;b<i;b++){
prinf("*");
}
printf("\n");
}
return 0;
}
Ada 2 jenis Loop yaitu :
- Infinitive loop yang dimana loop nya tidak akan pernah selesai
- nested loop yang dimana didalam loop akan ada looping lgi
While
syntax : while(exp){
statement1;
statement2;
…..
}
contoh :
#include<stdio.h>
void
main() {
int x = 1;
while (x<=10) {
printf( "%d\n", x );
x++;
}
}
Do-While
syntax :
do { <statement >;
}while ( kondisi);
contoh : do{
printf(”%d\n”,counter);
}
while(++counter <=10);
Contoh repetition yang lebih dari 1 :
#include <stdio.h>
int main()
{
int i,a,b;
for(a=0;a<i;a++){
for(b=0;b<i;b++){
if(i%2=0){
printf("*");
}
else{printf("#");}
}
printf("\n");
}
}
POINTERS DAN ARRAYS
Pointer
Pointer adalah variabel yang digunakan untuk menyimpan alamat variabel lain .
Syntax :
<type> *ptr_name;
Contoh :
int a , *ptr;
ptr = &a;
//yang dimana artinya *ptr = a karena alamatnya sama
Pointer to Pointer
syntax :
<type> **ptr_ptr;
Contoh :
int a,*ptr , **ptr_ptr;
ptr = &a;
ptr_ptr = &ptr;
Pointer konstan dan Pointer variabel
- Pointer Konstan adalah pointer yang tidak dapat ditugaskan dengan nilai baru pada saat run-time
- Pointer Variabel adalah pointer yang dapat ditugaskan dengan nilai baru pada saat run-tim
Note : Arrays termasuk dalam Pointer Konstan tetapi dapat diisi Pointer variabel
Arrays
Arrays adalah data yang disimpan dalam struktur tertentu yang digunakan dalam bentuk grup atau individual .
Karakter Arrays:
-Homogenous
Yang dimana semua tipe data nya sama
-Random Access
Setiap elemen dapat diakses secara acak tanpa harus berurutan
Jenis-Jenis Arrays :
-Arrays Satu Dimensi
Syntax :
type array_name [value_dim];
Contoh :
int a [100];
-Arrays Dua Dimensi
Syntax :
type name_array[row][column];
Contoh :
int a[3][5]; // akan tercipta 3 baris dan 5 kolom
-Arrays Tiga Dimensi
Syntax :
type name_array[row][column][depth];
Contoh:
int a[3][4][2];
Inisisasi Arrays
Arrays dapat diinisialisasi secara eksplisit tanpa deklarasi nilai dimensi.
Contoh 1 :
int a[ ] = { 1 , 2 , 3 , 4 };
Contoh 2 :
int a[5] ={1,2,3,0,0}; //value dimensi nya harus diberi ekstra slot seperti kita hanya ingin //memasukkan 3 karakter tapi value dimensinya dapat diisi 4 atau 5 agar tidak //error
Mengakses Arrays
Ada 2 cara yaitu :
- *(a+2) // untuk mengakses data ke-2
- a[2] // untuk mengakses data ke-2
Menetapkan Nilai Arrays
Contoh :
int a[ ] = { 1 , 2 , 3 , 4 };
//terdapat 4 data dan dimulai dari data 0 yaitu 1 , maka jika kita ingin memunculkan data terakhir //maka dapat dituliskan a[3]
String
String adalah array karakter yang diakhiri dengan karakter kosong
String konstan adalah beberapa karakter yang ditulis didalam 2 simbol kutipan ganda
Contoh : "Binus University"
Perbedaan String dan Char
- String ditulis didalam 2 simbol kutipan ganda sedangkan Char ditulis didalam 2 simbol kutipan tunggal
Contoh : char 'a' // character
char "A" //string
Memanipulasi string menggunakan library include<string.h> yang menyediakan banyak pilihan untuk memanipulasi string seperti strlen , strcpy , strcmp , dll .
Function And Recursion
Function Structure
return-value-type function-name (parameter-list){
statements;
}
return-value-type : tipe data dari nilai yang dikembalikan
Jika tidak diisi, maka tipe data default akan digunakan (bilangan bulat default)
Jika return-value-type batal maka fungsi tidak akan mengembalikan nilai
Contoh :
int maximum (int
x, int
y){
int max = x;
if ( y > max) max = y;
return
max
}
//cara memanggil function
void main(){
int a,b;
printf("Masukkan 2 bilangan genap : ");
scanf("%d %d",&a,&b);
printf("Nilai Terbesar adalah: %d\n",maximum(a,b));
}
Recursive
Recursive adalah sebuah function yang memanggil dirinya sendiri
Recursive memiliki 2 komponen :
-Base Case :mengembalikan nilai (konstan) tanpa memanggil panggilan rekursif berikutnya.
-Reduction Step :urutan nilai input konvergen ke case dasar.
Contoh:
1.Faktorial-Recursive
long factor(int n){
if(n==0)return (1);
else return(n*factor(n-1));
}
2.Faktorial-Iterative
long factor(int n){
long i,fac=1;
for(i=1;i<=n;i++) fac*=1;
return (fac);
}
CLOUD
- Cloud mengacu pada jaringan atau internet, yang hadir di tempat tertentu yang dapat diakses dari ruang mana pun melalui jaringan publik atau jaringan pribadi
- Cloud computing mengacu pada pengelolaan, konfigurasi, dan mengakses aplikasi secara online yang menawarkan penyimpanan data online, komputasi, infrastruktur jaringan, dan aplikasi yang dikirim sebagai layanan jaringan
- Cloud computing cenderung memisahkan infrastruktur dengan bisnis, sedangkan istilah "infrastruktur" merujuk pada perangkat keras, jaringan, dan perangkat lunak, yang dikelola sebagai satu kesatuan. Dan istilah "Bisnis" mengacu pada alur kerja prosedural, penegakan strategis, dll
CLOUD COMPUTING IDEA
- Infrastruktur IT-terpisah dari sistem utama, dikelola secara terpisah oleh satu pihak, dapat diakses, di mana saja melalui internet dan dapat berbagi
- Menggunakan cloud berarti mengalihdayakan "infrastruktur" manajemen dan risiko kepada pihak ketiga, dan perusahaan bisa lebih fokus pada "bisnis"
- Efisiensi pada penyediaan infrastruktur, pemanfaatan dan manajemen, terkait dengan adopsi teknologi baru: pusat data yang ditentukan perangkat lunak, kerangka kerja aplikasi instan, otomatisasi, analisis, dll
Contoh Penerapan Cloud:
- Jaringan sosial : Facebook , Instagram , dll
- Pembagian data : email , dropbox,dll
- Pendidikan : Smart Campus , E-library , E-learning, dll
- Bisnis : Online Shop Portal , Google Doc, dll
- HPC untuk durasi terbatas : efisiensi untuk beban kerja komputasi yang besar
Keuntungan Cloud:
- Biaya sumber daya komputasi yang lebih rendah
- Peningkatan kinerja yang fleksibel
- Mengurangi biaya perangkat lunak / perangkat keras
- Mengurangi batasan kapasitas penyimpanan
- Peningkatan keandalan data
- Akses data universal
- Independensi perangkat
Kerugian Cloud:
- Membutuhkan koneksi internet yang konstan
- Fitur mungkin terbatas
- Keprihatinan mengenai kinerja / kecepatan
- Kekhawatiran mengenai keamanan data
- Tidak berfungsi dengan koneksi berkecepatan rendah
File Processing:
- File dan Streams
- Definisi File
- Membuka file
- menututup File
- Input file dan Output file
1.File dan streams
Stream adalah urutan karakter. Semua data input dan output adalah stream. C melihat file sebagai stream.
Ketika program C berjalan , ada 3 stream standar yang aktif , yaitu :
1. Stream Input Standar ( file pointer nya stdin)
Mengontrol stream masukan dari keyboard
2. Stream Output Standar (file pointer nya stdout)
Mengontrol stream output ke monitor
3. Stream Kesalahan Standar ( file pointernya stderr)
Mengontrol error yang terjadi
Note : Setiap stream terhubung dengan sebuah file
2.Definisi File
typedef struct {
int level; // isi/level kosong dari buffer
unsigned flags; //Tanda status file
char fd; // Deskripsi file
unsigned char hold; // Abaikan char jika tidak ada buffer
int bsize; // Ukuran Buffer
unsigned char // Transfer Data buffer
unsigned char // Penunjuk aktif saat ini
unsigned istemp; // Indikator file sementara
short token; //Digunakan untuk pengecekan validitas
} FILE;
Buffer Area
Buffer area adalah bagian dari memori yang digunakan sebagai ruang sementara sebelum data dipindahkan ke file.
• Sintaks:
FILE * fp;
Di mana fp adalah file pointer yang menunjuk ke awal area buffer.
• Juga dikenal sebagai penghitung aliran.
3.Open File
Membuka file dengan menggunakan fopen():
fopen() mengembalikan pointer ke awal area buffer. Null akan dikembalikan jika file tidak dapat dibuka.
Membuka File menggunakan fopen():
Nilai mode yang memungkinkan:
Mode Deskripsi
"R" membuka file untuk dibaca.
"W" membuat file yang akan ditulis.
"A" membuka File untuk menambahkan data.
"R +" membuka File untuk membaca / menulis.
"W +" membuat file untuk dibaca / ditulis.
"A +" membuka File untuk dibaca / ditambahkan
"Rb" membuka File (biner) untuk dibaca.
"WB" membuat file (biner) untuk operasi tulis.
4.Close File
Menutup File menggunakan fclose ():
int fclose (FILE * stream);
- fclose () didefinisikan pada <stdio.h>
- fclose () akan mengembalikan 0 jika berhasil, dan EOF jika kesalahan
- EOF (End Of File) setara dengan -1
- fclose () akan merilis area buffer dan segera mengirim data yang tersisa ke file.
Menutup File menggunakan fcloseall ():
int fcloseall (void);
- Close all mengaktifkan stream kecuali: stdin, stdout, stdprn, stderr, dan stdaux
- Akan mengembalikan jumlah aliran yang ditutup jika berhasil, dan mengembalikan EOF sebagai gantinya.
- Header file <stdio.h>
fgetc (INPUT)
- Baca satu karakter dari file
- fgetc (stdin) setara dengan getchar ()
- Syntax: int fgetc (FILE * stream);
- Kembalikan karakter ketika berhasil, dan EOF saat kesalahan
- Menulis satu karakter ke file
- fputc ('a', stdout) mirip dengan putchar ('a')
- Syntax: int fputc (int c, FILE * stream);
- Kembalikan karakter ketika berhasil, dan EOF jika ada kesalahan
- Syntax: char * fgets (char * string, int n, FILE * stream);
- Baca satu baris dari file yang diakhiri dengan baris baru, atau maksimum jumlah karakter n-1.
- Kembalikan string jika berhasil dan NULL saat kesalahan
- Menulis baris ke file
- Syntax: int fputs (const char * string, FILE * stream);
- Kembalikan nilai non-negatif ketika berhasil dan EOF jika kesalahan.
- Syntax : int fscanf (FILE * stream, const char * format [, argumen] ...);
- Baca data dari file inline dengan pemformatan scanf.
- Kembalikan jumlah bidang yang dibaca saat berhasil, dan EOF jika ada kesalahan
- Syntax : int fprintf (FILE * stream, const char * format [, argumen] ...);
- Menulis data ke file menggunakan format printf.
- Kembalikan jumlah byte yang ditulis jika nilai berhasil dan negatif jika kesalahan.
- Syntax: size_t fwrite (const void * buffer, ukuran size_t, penghitungan size_t, FILE * stream);
- Menulis blok data di area buffer ke file
- Kembalikan jumlah data byte yang ditulis, dan kesalahan sebaliknya.
- Syntax: size_t fread (void * buffer, size_t size, count size_t, FILE * stream);
- Baca ukuran blok data dari file
- Syntax: int feof (FILE * stream);
- Cari tahu apakah penunjuk telah mencapai akhir file
- Kembalikan 0 jika bukan akhir file
Sorting and Searching in C++
Sorting
Sorting digunakan untuk mengurutkan suatu daftar dengan ascending maupun descending
Ada beberapa jenis sorting :
1.Bubble Sort
- Membandingkan dua nilai antara 2 pasangan
- Membandingkan dan menukarkan (Jika diperlukan)
- Dikenal juga dengan Exchange Sort
Contoh Codingannya :
void Bubble(int *DataArr, int n)
{
int i, j;
for(i=1;
i<n; i++)
for(j=n-1;
j>=i; j--)
if(DataArr[j-1]
> DataArr[j])
Swap(&DataArr[j-1],&DataArr[j]);
}
2.Selection Sort
Algoritmanya :
for(i=0;
i<N-1;
i++){ /* N=number of data */
Set idx_smallest
equal to i
for(j=i+1;
j<N; j++){
If array[ j ] < array [ idx_smallest ]
then idx_smallest = j
}
Swap array[ i ]
with array[ idx_smallest ]
}
3.Insertion Sort
Algoritmanya :
for(i=1;
i<n; i++) {
x =
A[i], insert x to its suitable place between A[0] and A[i-1].
}
4.Quick Sort
Algoritmanya :
void
QuickSort(int left, int right)
{
if(left < right){
//arrange elements R[left],...,R[right] that
//producing new sequence:
R[left],...,R[J-1] < R[J] and
R[J+1],...,R[right] > R[J].
QuickSort(left, J-1);
QuickSort(J+1, right);
}
}
5.Merge Sort
-Merge Sort adalah algoritma pengurutan berdasarkan algoritma divide-and-conquer
-Divide-and-conquer adalah paradigma desain algoritma umum
1.Divide: membagi input data dalam dua subset yang disatukan
2.Recur: pecahkan masalah sub yang terkait dengan subhimpunan
3.Conquer: menggabungkan solusi untuk setiap bagian menjadi solusi
Searching
Programer akan sering bekerja dengan sejumlah besar data yang disimpan dalam array
Sehingga kita perlu menentukan apakah array tersebut memiliki nilai yang kita cari dengan mencarinya dengan kata kunci
Proses pencarian inilah yang dinamakan Searching .
Searching adalah tindakan untuk mengambil informasi berdasarkan Key(kunci) tertentu dari beberapa informasi yang disimpan.
Key digunakan untuk melakukan pencarian rekaman yang diinginkan dari satu set daftar data
Key harus unik, artinya tidak boleh ada kunci yang sama dalam data
Contoh:
Data siswa terdiri dari nama, nim, jenis kelamin, alamat, tempat dan tanggal lahir
nim digunakan sebagai Key dari data, karena itu unik.
Ada beberapa jenis Searching :
1.Linear Search
- Linear Search membandingkan setiap elemen dari array dengan kunci pencarian.
- Karena array tidak dalam urutan tertentu, kemungkinan besar nilainya akan ditemukan di elemen pertama
- Oleh karena itu rata-rata program harus membandingkan kunci pencarian dengan setengah elemen dari array
n :
total record of array x.
For each x[i],
0 <= i <= n-1,
check
whether
x[i] = key.
If x[i]
= key,
then the searched data is found in index=i.
Finished.
If x[i] != key,
then continue searching until the last data which is i
= n-1.
If i=
n-1 and x[i] != key, it
means the data is not exist in the list, and set
index = -1.
Finished.
2.Binary Search
- Metode pencarian linier berfungsi baik untuk array kecil atau tidak disortir. Namun, untuk pencarian dalam array yang besar tidak efisien
- Jika susunan diurutkan, teknik pencarian Binary berkecepatan tinggi dapat digunakan
Algoritmanya :
n
: total record of array
x.
left=0, right= n-1.
mid
=(int)
(left + right)/2.
If
x[mid]=key
then index
= mid.
Finished.
If
x[mid]<key
then left
= mid+1.
If
x[mid]>key
then right
=
mid-1.
If
left <= right and x[mid] !=
key,
then repeat point 3.
If
x[mid] != key then index
= -1.
Finished.
3.Interpolation Search
- Teknik pencarian interpolasi dilakukan pada data yang diurutkan
- Proses pencarian ini hampir mirip dengan teknik pencarian biner
- Teknik pencarian dilakukan dengan perkiraan lokasi data
Contoh :
Jika kita ingin mencari nama di buku telepon, misalnya yang diawali dengan huruf T, maka kita tidak akan mencari dari awal buku, tetapi kita membukanya di 2/3 atau ¾ dari buku.
Algoritmanya :
Dalam pencarian interpolasi, kami akan membagi data sesuai dengan rumus berikut:
mid = ((kunci-data[min])/(data[max]-data[min])) x (max-min) + min
If data[mid]
= sought
data,
data has
been found, searching
is stopped and return mid.
If data[mid]!=
sought data, repeat
point **
**Searching
is continued while sought data
> data[min] and sought
data
< data[max].
Mencari nilai tengah dengan memasukkan rumus interpolasi
If data [mid]> sought data, high = mid - 1
If data [mid] <sought data, low = mid + 1
It will be looped until the requirements point ** are not met then return (-1), data not found