===============================================================
*Dalam bahasa C, Pointer bisa berfungsi sebagai variabel array
misal pa = &c[0]
berarti pointer pa menunjuk elemen array ke-0 dalam variabel C

Kalau mendeklarasikan pointer kedalam array, tidak boleh menggunakan tanda bintang

jadi : pa = &c[1];

TUJUAN PENGGUNAAN POINTER DALAM BAHASA C :

1. Mengirimkan “Parameter yang berupa variabel” ke dalam fungsi, artinya nilai
variabel bisa diubah di dalam fungsi

int nama fungsi (int *b) {
*b = *b + 1;
}
main () {
int x=1;
nama_fungsi (&x);
printf (“%d”, x); // output :2, karena x diubah di dalam fungsi menjadi x=x+1;
}

DALAM BAHASA PASCAL :
Procedure nama_proc (var b:integer);
begin
B=b+1;
end;
var x;
begin
x=1;
nama_proc (x);
writeln (x); // output : 2
end.

2. Untuk membuat variabel DINAMIS (Bukan variabel Statis)

Contoh variabel STATIS dalam bahasa C :

#include <stdio.h>
main () {
int a[2], i;
for (1=0; i<2; i++) {
scanf (“%d”, &a[i]);
}

printf (“Anda mengetikkan :”);
for )i=0; i<2; i++) {
printf (“\n%d”, a[i]);
}
}

Contoh variabel DINAMIN dalam bahasa C :


Program dibuat lebih fleksibel, artinya… apabila kita belum mengetahui berapa banyak jumlah data yg akan diinput oleh operator, maka kita akan membuat program sedemikian rupa sehingga program menjadi fleksibel terhadap data yg akan diinput oleh operator.

1.============================================================*

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <alloc.h> /* dibutuhkan untuk fungsi alokasi memori */

void main(){
int num, index, *p;
randomize();
do {
printf(“Berapakah jumlah data yang akan dimasukkan ? “);
scanf(“%d”,&num);
if (num==0) break;

/*****
Mengalokasikan array secara dinamis
sebanyak #num# elemen
*****/

p = (int *) malloc (sizeof(int) * num);

for (index=0; index<num; index++){
/*****
Mengisi alamat memori yang ditunjuk ptemp
dengan bilangan acak
*****/

p[index] = random(1000)+1;
}
for (index=0; index<num; index++){
printf(“Nilai ke-%d: %d\n”, index+1, p[index]);
}
//printf(“Sisa memori heap sesudah alokasi array: %u”,
//coreleft());
/*****
Membebaskan kembali memori yang
sudah dialokasikan
*****/

free(p);
printf(“\n”);
} while (num>0);
}

2.============================================================*

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <alloc.h> /* dibutuhkan untuk fungsi alokasi memori */

void main(){
int *p;
float *q;
p = (int *) malloc (sizeof(int) *2); //array dinamis 2 elemen
p[0]= 200;
p[1]=500;
printf(“%d %d”, p[0], p[1]);
free(p);
p = (int *) malloc (sizeof(int) *20);
p[19]= 10000;
printf(“\n%d”, p[19]);
free(p);
q = (float *) malloc (sizeof(float) *2);

q[0]= 100.25;
q[0]= 200.75;
printf(“\n%.2f %.2f”, q[0], q[1]);
free(q);

}

==============================================================*

Kegunaan Pointer

May 11, 2008

#include <stdio.h>
main() {

int a, b;
int *pa, *pb;
pa= &a; // pa diisi dengan alamat variabel a
pb= &b; // pa diisi dengn alamat variabel b
a= 10;
//b= 2000;

printf(“%d\n”, *pa); //menampilkan isi dari alamt yg ditunjuk oleh pa
printf(“%d\n”, *pb); //menampilkan isi dari alamt yg ditunjuk oleh pb

pa= pb;

printf(“%d\n”, *pa); // output: 2000

*pa = 500; // mengisi alamat yg ditunjuk pb dengan 500
// dengan kata lin, mengisi b dengan 500
// karena pb menunjuk alamat dari b

printf(“%d\n”, a); //output: 10
printf(“%d\n”, b); // output: 1, karena pa juga menunjuk alamat dari b

b= 250;
printf(“%d\n”, *pa); //output: 250

pb= &a;
printf(“%d\n”, *pb); //output: 10

printf(“\n\n\n”);

int c[4]= {10,20,30,40};
printf(“%d\n”, c[1]);

pa = &c[0];
printf(“%d\n”, *pa);
printf(“%d\n”, pa[1]);

pa= &c[2];
printf(“%d\n”, pa[1]);

pa= &c[1];
printf(“%d\n”, pa[1]);

pb =c; // c adalah pointer yng menunjuk &c[0]
printf(“%d\n”, *pb);
printf(“%d\n”, pb[1]);

// variabel array yg dideklarasikan berfungsi sama
// persis dengan pointer, bedanya c tidak bis diisi dengan alamat yang lain
// c= &ca ->> error

printf(“\n\n\n”);
printf(“%d\n”, *(c+1));
printf(“%d\n”, *(pb+2)); //output: pb[2] -> 30

pa = &c[2];
printf(“%d\n”, *(pa-2)); //output: 10
printf(“%d\n”, *(–pa)); //output: 20
printf(“%d\n”, *(–pa)); //output: 30

/************************************************************************************************
=>Tujuan penggunaan pointer dalam Bahasa C:


1. Mengirimkan “parameter yang berupa variabel” ke dalam fungsi, artinya nilai variabel
bisa diubah di dalam fungsi

int nama_fungsi (int *b){
*b = *b + 1;
}
main() {
int x=1;
nama_fungsi(&x);
printf(“%d”, x); //output: 2, karena x di ubah di dalam fungsi menjadi x= x+1

2. Untuk membuat variabel DINAMIS (Bukan variabel Statis)

***********************************************************************************************/
}

1.==============================================================*

#include <iostream.h>
#include <iomanip.h>
int main()
{
int x,y;
for (x=1;x<=10;x++)
{
for (y=1;y<=x;y++)
{
cout<<setw(4)<< x+3*y<<”";
}
cout<<”\n”;
}
return 0;
}

2.==============================================================*
#include<iostream.h>
void main()
{
for (int x=0; x<=25; x++)
{
if(x!=11 && x!=21)
cout<<x<<endl;
}
}

3.==============================================================*
#include<iostream.h>
#include<iomanip.h>
int main ()
{
int pilihan;
cout <<”*********Menu Utama*********”<<endl;
cout <<”1. Tampilan untuk for bersarang” <<endl;
cout <<”2. Tampilan untuk deret bilangan cacah kecuali 11 dan 12″ <<endl;
cout <<”\n”;
cout <<”Masukan Pilihan Anda [1..2]:”;
cin  >>pilihan;
switch (pilihan)
{
case 1 :
{
int x,y;
for (x=1;x<=10;x++)
{
for (y=1;y<=x;y++)
{
cout<<setw(4)<<x+3*y<<”";
}
cout<<”\n”;
}
return 0;
break;
}

case 2:
{
for (int x=0; x<=25; x++)
{
if(x!=11 && x!=21)
cout<<x<<endl;
}    break;
}

default:
cout<<”Kode Pilihan yang anda masukan salah!”<<endl;
break;
}
return 0;
}

=================================================*

#include <iostream.h>
int main ()
{
int A; //mendeklarasikan variabel
A = 5;
cout<<”Contoh melakukan pre-increment \n”;
cout<<”Nilai A awal adalah : “<<A<<endl;
cout<<”Nilai ++A adalah :”<<++A<<endl;
cout<<”Nilai A akhir adalah:”<<A<<endl;
cout<<’\n’<<endl;
cout<<”Contoh melakukan pre-decrement \n”;
cout<<”Nilai A awal adalah : “<<A<<endl;
cout<<”Nilai –A adalah :”<<–A<<endl;
cout<<”Nilai A akhir adalah:”<<A<<endl;
cout<<’\n’<<endl;
//mengubah nilai A menjadi 10
A = 10;
cout<<”Contoh melakukan pre-increment \n”;
cout<<”Nilai A awal adalah : “<<A<<endl;
cout<<”Nilai A++ adalah :”<<A++<<endl;
cout<<”Nilai A akhir adalah:”<<A<<endl;
cout<<’\n’<<endl;
cout<<”Contoh melakukan pre-decrement \n”;
cout<<”Nilai A awal adalah : “<<A<<endl;
cout<<”Nilai A– adalah :”<<A–<<endl;
cout<<”Nilai A akhir adalah:”<<A<<endl;
cout<<’\n’<<endl;
return 0;
}

===========================================================*

Contoh Program Stack.
==============================================================*
#include <stdio.h>
#include <string.h>
#define MAX_STACK 10

typedef struct STACK {
int top;
char data[10][10];
};
STACK tumpuk;
void inisialisasi(){
tumpuk.top = -1;}

int IsFull(){
if(tumpuk.top == MAX_STACK-1) return 1; else return 0;}
int IsEmpty(){
if(tumpuk.top == -1) return 1; else return 0;}

void Push(char d[10]){
tumpuk.top++;
strcpy(tumpuk.data[tumpuk.top],d);}

void Pop(){
printf(“******************************\n”);
printf(“DATA YANG TERAMBIL ADALAH = %s\n”,tumpuk.data[tumpuk.top]);
tumpuk.top–;
printf(“******************************\n”);
}

void Clear(){
tumpuk.top=-1;}

void TampilStack(){
for(int i=tumpuk.top;i>=0;i–){
printf(“******************************\n”);
printf(“DATA YANG SEKARANG ADALAH : %s\n”,tumpuk.data[i]);
}}

int main(){
int pil;
inisialisasi();
char dt[10];
do{
printf(“%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n”);
printf(“==> Created by :\n”);
printf(“  ==> Nama      : Rizki\n”);
printf(“          ==> Operating Sytem   : Ubuntu Linux Gusty Gibbon 7.10\n”);
printf(“|===========================================|\n”);
printf(“|=============== |MENU UTAMA| ==============|\n”);
printf(“|===========================================|\n”);
printf(“1. push  (Untuk Menambah Stack)\n”);
printf(“2. pop   (Untuk Mengambil Stack Teratas)\n”);
printf(“3. print (Untuk Menampilkan Seluruh Data Yang Ada Di Dalam Stack)\n”$
printf(“4. clear (Untuk Mengosongkan Stack)\n”);
printf(“5. exit  (keluar dari program)\n\n”);

printf(“Masukkan Pilihan Anda : “);scanf(“%d”,&pil);
switch(pil){
case 1: if(IsFull() != 1){
printf(“******************************\n”);
printf(“DATA YANG DI INPUT = “);scanf(“%s”,dt);
Push(dt);

printf(“******************************\n”);
}
else printf(“\n Data Sudah penuh!\n”);
printf(“\n”);
break;

case 2: if(IsEmpty() != 1)
Pop();
else
printf(“\nDATA MASIH KOSONG!\n”);
printf(“\n”);
break;

case 3: if(IsEmpty() != 1)
TampilStack();
else
printf(“\nDATA => MASIH KOSONG !\n”);
printf(“\n”);
break;

case 4: Clear();  printf(“\nDATA ===> SUDAH KOSONG !\n”);
printf(“\n”);
break;
}
}while(pil != 5);
}
===============================================================*

1. Latihan buatlah program untuk deret bilangan genap dari 10 sampai 50 kecuali 30
dengan menggunakan for, while, do while !

2. Buatlah program dengan menggunakan for bersarang dengan tampilan sbb:
[=============================================================]
1
2 4
3 6 9
4 8 12 16
5 10 15 20 25
6 12 18 24 30 36
7 14 21 28 35 42 49
8 16 24 32 40 48 53 64
9 18 27 36 45 54 63 72 81
10 20 30 40 50 60 70 80 90 100
[=============================================================]

The Answer below and Was Cr4ck3d – d(^_^)b

[=============================================================]
1.

#include<iostream.h>
void main()
{
for (int x=10; x<=50; x++)
{
if(x%2==0 && x!=30)
cout<<x<<endl;
}
}

===========================================================*
2.

#include <iostream.h>
#include <iomanip.h>
int main()
{
int x,y;
for (x=1;x<=10;x++)
{
for (y=1;y<=x;y++)
{
cout<<setw(4)<< x*y<<”";
}
cout<<”\n”;
}
return 0;
}

===========================================================*

=================================================*

Program membuat menu

=================================================*

#include<iostream.h>
int main ()
{
int pilihan;
cout <<”*********Menu Favorit Anda*********”<<endl;
cout <<”1. Huruf vokal dan konsonan” <<endl;
cout <<”2. Menentukan Karakter” <<endl;
cout <<”\n”;
cout <<”Masukan Pilihan Anda [1..2]:”;
cin >>pilihan;
switch (pilihan)
{
case 1 :
{
char huruf;
cout <<”1. Huruf vokal dan konsonan” <<endl;
cout <<”Masukan sebuah huruf:”;
cin >>huruf;
if ((huruf == ‘A’) || (huruf == ‘a’) || (huruf ==’I') || (huruf == ‘i’) ||
(huruf == ‘U’) || (huruf == ‘u’) || (huruf == ‘E’) || (huruf == ‘e’) ||
(huruf == ‘O’) || (huruf == ‘o’))
{
cout << huruf <<”adalah huruf vokal”;
}
break;
}

case 2:
{
char karakter;
cout <<”2. Menentukan Karakter” <<endl;
cout <<”Masukan Sebuah Karakter:”;
cin >> karakter;
if (karakter >=’A’ && karakter <=’Z')
cout<<”Masukan Anda Adalah Huruf Besar”;
else if (karakter >=’a’ && karakter <=’z')
cout<<”Masukan Anda adalah huruf kecil”;
else if (karakter >=’0′ && karakter <=’9′)
cout<<”Masukan Anda adalah angka”;
else
cout<<”Masukan Anda bukan Alphanumeric”;
break;
}

default:
cout<<”Kode yang Anda masukan Salah, cobalah beberapa tahun lagi!!!!”<<endl;
break;
}
return 0;
}

==============================================*
Menghitung bilangan Faktorial
==============================================*
#include <iostream.h>
int main()
{
int BIL, C;
long faktorial=1;
cout<<”Masukkan bilangan yang akan dihitung=”;
cin>>BIL;
C=BIL;
cout<<C<<”!=”;
while (C>=1)
{
faktorial*=C;
if (C!=1){
cout<<C<<”X”;
}else {
cout<<C<<”=”;
}
cout<<faktorial;
return 0;
}
}

===================================================*

Program menghasilkan segitiga pascal

===================================================*
#include <iomanip.h>
#include <conio.h>
#include <iostream.h>
main()
{
unsigned int n,a,b,x,s[100],p[100];
cout<<”Masukkan nilai n: “; cin>>n;
for(a=0,x=0;a<=n;a++,x+=2)
{
cout<<setw(3*n-x);
s[a]=1;
p[a]=1;
for(b=0;b<=a;b++)
{
if (b<1||b==a) cout<<”1″<<setw(4);
else
{
s[b]=p[b];
p[b]=s[b-1]+s[b];
cout<<p[b]<<setw(4);
}
}
cout<<endl;
}
getch();
return 0;
}

=====================================================================*
Menghitung nilai desimal ke biner
=====================================================================*

#include <iostream.h>
#include <conio.h>
#include <math.h>
void main()
{
int p,n,i=0;
cout<<”Masukkan bilangan desimal : “;
cin>>p;
double A[100];
do
{
A[++i]=p%2;
p=p/2;
floor(p);
} while (p>1);
cout<<”Nilai binernya : “;
cout<<p;
for(n=i;n>=1;n–)
{
cout<<A[n];
}
getch();
}

============================================================*
Looping
============================================================*

#include <iostream.h>
void main()
{
int n;
for(;;)
{
cout<<”Masukkan bilangan integer : “; cin>>n;
if(n % 2 == 0) continue;
else if(n % 5 == 0) break;
cout<<”\tLanjutkan loop berikutnya.\n”;
}
cout<<”Akhiri Loop.\n”;
}

============================================================*
Bilangan Matriks
============================================================*

#include<iostream.h>
#include<iomanip.h>
int main()
{
int x,y;
for (x=1; x<=5; x++)
{
for (y=1; y<=5; y++)
{
cout<<setw(4)<<x+y<<”";
}
cout<<”\n”;
}
return 0;
}

==============================================================*

Operasi File Teks

May 5, 2008

Algoritma Pemrograman II

====================================================*
Langkah membuat file baru dan merekam data dalam file:
1.)  Assign >> pada saat assign file nilai.dat belum di tulis di dalam disk
2.) Rewrite (buat file baru)
3.) Write >> merekam data
4.) Close

Lankah membaca file yang yang telah di rekam di dalam disk:
1.) Assign
2.) Reset
3.) Read
4.) Write
5.) Close

reset >> buka file baru yang sudah pernah di buat.
pindah ke record tertentu >>  seek (g, nomor record)

Operasi file Teks

Sequential Acces File:
Begitu dibuk dengan “reset” maka tidak bisa di tulis

Sequential Acces File:
Merekam teks baru (file  baru)
*Rewrite
Menambah teks
*Append
Membaca teks
*Reset

Penanganan kesalahan (error handling):
{$i-}

Program reminder:
1. Merekam tugas/appoinment
- tanggal, bulan, tahun
-
2. Memeriksa tanggal untuk dibandingkan dengan semua tugas/appoinment
3.

Record / Struct

POINTER

Pointer -> sebuah tipe variabel yang berisi alamat memori komputer yang menyimpan nilai bertipe tertentu

Pointer bertipe integer -> pointer yang menunjuk alamat memori yang berisi nilai bertipe integer

Pointer bertipe float -> pointer yang menunjuk alamat memori yang berisi nilai bertipe float

Variabel bukan pointer:
int a= 100;
float b=  10.5;

Variabel pointer
int *pointer_a; /* pointer_a adalah variabel pointer yang menunjuk alamat nilai bertipe integer */
float *x; /* x adalah variabel pointer yang menunjuk alamat nilai bertipe float */

x = &b; /* mengisi x dengan alamat dari variabel b */

pointer_a  = &a; /* mengisi  pointer_a dengan

1. Variabel Statis
Tidak perlu pointer -> int a, float b, char x, int a[10], char m[12]

2. Variabel Dinamis
Perlu Pointer

=============================================================*
#include<stdio.h>
main() {
int a;
float b;
int *pointer_a;
float *x;

a=10; b=20.5;
pointer_a= &a;
x = &b;

printf(“%d\n”, *pointer_a);  /* output 10, nilai yg terdapat di dalam memori
yg di tunjuk oleh pointer_a */
printf(“%f\n”, *x); /* output 20.5, nilai yg terdapat di dalam memori
yang di tunjuk oleh pointer_x */
printf(“%f\n”, *pointer_a + *x); /* output 30.5 */
printf(“%f\n”, a+b); /* output 30.5 */

}

=============================================================*

uses wincrt;
type TMhs=record
NIM:string;
nama:string;
IPK:real;
end;
var
f:file of TMhs;
mahasiswa:TMhs;

begin
assign(f, ‘mhs.dat’);rewrite(f);
mahasiswa.NIM:=’123′; mahasiswa.nama:=’Adi’; mahasiswa.IPK:=3.5;
write(f,mahasiswa);
mahasiswa.NIM:=’234′; mahasiswa.nama:=’Budi’; mahasiswa.IPK:=2.75;
write(f,mahasiswa);

close (f);
reset(f);
seek(f,1);
read(f,mahasiswa);
writeln(mahasiswa.NIM);
writeln(mahasiswa.nama);
writeln(mahasiswa.IPK:4:2);
close(f);
end.

==================================================================*

Follow

Get every new post delivered to your Inbox.