Sabtu, 01 Desember 2012
CONTOH PROGRAM QUEUE PADA BAHASA C
#include "stdio.h"
#include "stdlib.h"
#define MAX 5
int queue[MAX];
int front = -1;
int rear = -1;
main() {
int pil;
clrscr();
while(1){
clrscr();
printf("\n+-------------------+\n");
printf("| Menu |\n");
printf("+-------------------+\n");
printf("| 1. Insert Queue |\n");
printf("| 2. Delete Queue |\n");
printf("| 3. Display Queue |\n");
printf("| 4. Exit |\n");
printf("+-------------------+\n");
printf("Masukkan Pilihan : ");
scanf("%d", &pil);
switch(pil){
case 1 :
clrscr();
insert();
break;
case 2 :
clrscr();
del();
break;
case 3 :
clrscr();
display();
break;
case 4 :
exit(1);
break;
default :
printf("\nInput Salah !"); } } }
insert() {
int add;
clrscr();
if(rear==MAX-1){
printf("Queue Overflow !!!\n");}
else {
if(front==-1)
front = 0;
printf("Masukkan Nilai Elemen Queue : ");
scanf("%d",&add);
rear=rear+1;
queue[rear] = add; } }
del() {
clrscr();
if (front==-1 || front > rear) {
printf("Queue Underflow \n");
return;
} else {
printf("Element Queue yang di Delete adalah : %d \n", queue[front]);
front=front+1;
getch(); } }
display() {
int i;
clrscr();
if (front == -1){
printf("Queue kosong\n");
}else {
printf("Nilai Element Queue Adalah : \n");
for(i=front;i<=rear;i++){
printf("%d",queue[i]);
printf(" ");} }
getch(); }
Kalo ingin melihat output programnya klik disini.
CONTOH PROGRAM INFIX TO POSTFIX PADA BAHASA C
#include<stdio.h>
#include<conio.h>
#include<string.h>
#include<math.h>
#define oper(x) (x=='+' || x=='-' || x=='*' || x=='/')
char in[30], post[30], stack[30];
int top=-1;
void push(char x)
{
stack[++top]=x;
}
char pop()
{
return stack[top--];
}
int precedence(char c)
{
if (c=='+' || c=='-')
return 1;
if (c=='*' || c=='/')
return 2;
if (c=='(')
return 3;
}
main()
{
char c;
int l,i,j=0,st1[20],k,h,f,eval,s,N;
clrscr();
printf("Masukkan notasi infix : ");
scanf("%s",&in);
l=strlen(in);
for(i=0;i<=l;i++)
{
if(oper(in[i]))
{
post[j++]=' ';
while(precedence(in[i])<precedence(stack[top])) //any problem here?
{
post[j++]=stack[top];
pop();
post[j++]=' ';
}
push(in[i]);
}
else if(in[i]=='\0')
{
while(top!=-1)
{
post[j++]=' ';
post[j++]=stack[top];
pop();
}
}
else
post[j++]=in[i];
}
post[j]='\0';
printf("Hasil notasi postfix : %s\n",post);
i=0;top=-1;f=0;k=0;
while(i<j)
{
if(oper(post[i]))
{
f=1;
c=post[i];
eval=0;
switch(c)
{
case '+':
eval=st1[top-1]+st1[top];
break;
case '-':
eval=st1[top-1]-st1[top];
break;
case '*':
eval=st1[top-1]*st1[top];
break;
case '/':
eval=st1[top-1]/st1[top];
break;
}
top--;
st1[top]=eval;
}
else if(post[i]==' ')
{
if(f==0)
{
h=i-k;
s=0;
while(post[h]!=' ')
{
N=(int)post[h];
N=N-48;
s=s+N*(pow(10,(k-1)));
k--;
h++;
}
st1[++top]=s;
}
k=0;
}
else
{
k++;
f=0;
}
i++;
}
printf("Hasil operasi perhitungan : %d\n",st1[top]);
getch();
return 0;}
kalo ingin meliat output programnya klik disini.
CONTOH PROGRAM NODE PADA BAHASA C
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>
#define N 100
struct dclinklist{
struct dclinklist *prev; /** Stores address of previous node **/
int roll_no; /** stores roll number **/
char name[N]; /** stores Name **/
float marks; /** stores Marks **/
struct dclinklist *next; /** stores address of next node **/
};
/** Redefining dclinklist as node **/
typedef struct dclinklist node;
void init(node*); /** Input function **/
void ins_aft(node*); /** Function inserting before **/
node* ins_bef(node*); /** Function inserting after **/
node* del(node*); /** Function deleting a node **/
void search(node*); /** Function for searching node **/
void disp(node*); /** Function for displaying node **/
void rollsrch(node*); /** Function for searching node by roll number **/
void namesrch(node*); /** Function for searching node by name **/
void marksrch(node*); /** Function for searching node by marks **/
/*** Main Function ***/
void main(){
node *head;
char ch; /* Choice inputing varible */
int opt; /* Option inputing variable*/
static int flag=0; /* Unchanged after iniialization */
clrscr();
head=(node*)malloc(sizeof(node));
head->next=NULL; /* NULL is being over written in init function */
head->prev=NULL;
do{
again:
printf("\nInput pilihan\n");
printf("\n1. Inisialisasi node\n");
printf("\n2. Insert sebelum spesifik node\n");
printf("\n3. Insert setelah spesifik node\n");
printf("\n4. Delete node \n");
printf("\n5. Search Node\n");
printf("\n6. Display Semua node\n");
scanf("%d",&opt);
if(flag==0 && opt!=1){
printf("\nHarus Inisialisasi Node terlebih dahulu sebelum input!\n");
goto again;
}
if(flag==1 && opt==1){
printf("\nInisialiasi cuma bisa dilakukan sekali!\n");
printf("\nInput sebuah node sekarang\n");
goto again;
}
if(opt==4 && head->next==head){
printf("\nProses penghapusan tidak boleh dilakukan, jika node hanya terdiri dari 1!\n");
goto again;
}
if(flag==0 && opt==1)
flag=1;
switch(opt){
case 1:
init(head);
break;
case 2:
head=ins_bef(head);
break;
case 3:
ins_aft(head);
break;
case 4:
head=del(head);
break;
case 5:
search(head);
break;
case 6:
disp(head);
break;
default:
break;
}
printf("\nMasih mau melanjutkan proses![y/n]\n");
ch=(char)getche();
}while(ch=='Y' || ch=='y');
printf("\nDone by \"LAB TI Univ-Gunadarma J1\"\n");
printf("\nPress any key to exit\n");
getch();
}
/*** Function for inputing data ***/
void init(node *start){
start->prev=start;
printf("\nMasukkan Roll number\n");
scanf("%d",&start->roll_no);
printf("\nMasukkan nama\n");
fflush(stdin);
gets(start->name);
printf("\nMasukkan Tanda\n");
scanf("%f",&start->marks);
start->next=start;
}
/*** Function for inserting a node after a specified node ***/
void ins_aft(node *start){
int rno; /* Roll number for inserting a node */
int flag=0;
node *newnode; /* New inputed node*/
node *current; /* Node for travelling the linked list*/
newnode=(node*)malloc(sizeof(node));
printf("\nMasukkan setelah Roll Number berapa kamu mau menyisipkan!\n");
scanf("%d",&rno);
init(newnode);
current=start;
while(current->next!=start){
/*** Insertion checking for all nodes except last ***/
if(current->roll_no==rno){
newnode->next=current->next;
current->next->prev=newnode;
current->next=newnode;
newnode->prev=current;
flag=1;
}
current=current->next;
}
if(flag==0 && current->next==start && current->roll_no==rno){
/*** Insertion checking for last node ***/
newnode->next=current->next; /* Start is being copied */
current->next->prev=newnode;
current->next=newnode;
newnode->prev=current;
flag=1;
}
if(flag==0 && current->next==NULL)
printf("\nNo match found\n");
}
/*** Function for inserting a node before a specified node ***/
node* ins_bef(node *start){
int rno; /* Roll number for inserting a node*/
node *newnode; /* New inputed node */
node *current; /* Node for travelling the linked list*/
newnode=(node*)malloc(sizeof(node));
printf("\nMasukkan sebelum Roll Number berapa kamu mau menyisipkan!\n");
scanf("%d",&rno);
init(newnode);
current=start;
if(current->roll_no==rno){
/*** Insertion checking for first node ***/
newnode->next=current;
current->prev=newnode;
while(current->next!=start)
current=current->next;
newnode->prev=current;
current->next=newnode;
start=newnode;
return(start);
}
while(current->next!=start){
/*** Insertion checking for all node except first ***/
if(current->next->roll_no==rno){
newnode->next=current->next;
current->next->prev=newnode;
current->next=newnode;
newnode->prev=current;
return(start);
}
current=current->next;
}
/*If the function does not return from any return statement.There is no match to insert before the input roll number. */
printf("\nMatch not found\n");
return(start);
}
/*** Function for deleting ***/
node* del(node *start){
int rno; /* Roll number for deleting a node*/
node *delnode; /* Node to be deleted */
node *current; /* Node for travelling the linked list*/
printf("\nEnter the roll number whose node you want to delete\n");
scanf("%d",&rno);
current=start;
if(current->roll_no==rno) {
/*** Checking condition for deletion of first node ***/
delnode=current; /* Unnecessary step */
while(current->next!=start)
current=current->next;
current->next=start->next;
start->next->prev=current;
start=start->next;
free(delnode);
return(start);
}
else{
while(current->next->next!=start){
/*** Checking condition for deletion of ***/
/*** all nodes except first and last node ***/
if(current->next->roll_no==rno){
delnode=current->next;
current->next=current->next->next;
current->next->prev=current;
free(delnode);
return(start);
}
current=current->next;
}
if(current->next->next==start && current->next->roll_no==rno){
/*** Checking condition for deletion of last node ***/
delnode=current->next;
free(delnode);
current->next=start;
return(start);
}}
printf("\nMatch not found\n");
return(start);
}
/*** Function for searching ***/
void search(node *start){
int ch; /* Choice inputing variable */
printf("\nPencarian Berdasarkan kriteria\n");
printf("\n1. Roll number\n");
printf("\n2. Nama\n");
printf("\n3. Tanda\n");
scanf("%d",&ch);
switch(ch){
case 1:
rollsrch(start);
break;
case 2:
namesrch(start);
break;
case 3:
marksrch(start);
break;
default:
rollsrch(start);
}}
/*** Function for searching ***/
void rollsrch(node *start){
int rno; /* Roll-number to be searched */
node *current; /* Node for travelling the linked list*/
printf("\nMasukkan Roll Number berapa yang mau dicari!\n");
scanf("%d",&rno);
current=start;
while(current->next!=start){
if(current->roll_no==rno)
printf("\n%d\t%s\t%f\n",current->roll_no,current->name,current->marks);
current=current->next;
}
if(current->next==start && current->roll_no==rno)
printf("\n%d\t%s\t%f\n",current->roll_no,current->name,current->marks);
}
/*** Function for searching ***/
void namesrch(node *start){
char arr[20]; /* Name to be searched*/
node *current; /* Node for travelling the linked list*/
printf("\nInput nama yang mau di cari!\n");
fflush(stdin);
gets(arr);
current=start;
while(current->next!=start){
if(strcmp(current->name,arr)==NULL)
printf("\n%d\t%s\t%f\n",current->roll_no,current->name,current->marks);
current=current->next;
}
if(current->next==start && strcmp(current->name,arr)==NULL)
printf("\n%d\t%s\t%f\n",current->roll_no,current->name,current->marks);
}
/*** Function for searching ***/
void marksrch(node *start){
float marks; /* Marks to be searched */
node *current; /* Node for travelling the linked list*/
printf("\nInput tanda yang mau dicari!\n");
scanf("%f",&marks);
current=start;
while(current->next!=start){
if(current->marks==marks)
printf("\n%d\t%s\t%f\n",current->roll_no,current->name,current->marks);
current=current->next;
}
if(current->next==start && current->marks==marks)
printf("\n%d\t%s\t%f\n",current->roll_no,current->name,current->marks);
}
/*** Function for displaying the linked list ***/
void disp(node *start){
node *current; /* Node for travelling the linked list*/
current=start;
while(current->next!=start) {
printf("\n %d %s %f",current->roll_no,current->name,current->marks);
current=current->next;
}
printf("\n %d %s %f",current->roll_no,current->name,current->marks);
}
kalo mau lihat output programnya klik disini.
CONTOH PROGRAM POINTER PADA BAHASA C
#include <stdio.h>
#include <conio.h>
void main()
{
int nilai1,nilai2,nilai3,*penunjuk,*penunjuk1,*penunjuk2;
nilai1 = 123;
nilai2 = 345;
nilai3 = 678;
clrscr();
penunjuk = &nilai1;
penunjuk1 = &nilai2;
penunjuk2 = &nilai3;
printf("Nilai %d di alamat memory %p \n",*penunjuk,penunjuk);
printf("Nilai %d di alamat memory %p \n",*(penunjuk1),penunjuk+1);
printf("Nilai %d di alamat memory %p \n",*(penunjuk2),penunjuk+2);
getch();
clrscr();
}
jika ingin melihat outputnya, klik disini.
CONTOH PROGRAM MATRIKS PADA COBOL
IDENTIFICATION DIVISION.
PROGRAM-ID. MATRIKS.
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
77 A PIC 9.
77 I PIC 99.
77 J PIC 99.
01 CETAK.
02 M1 PIC Z9.
02 M2 PIC Z9.
02 T PIC Z9.
01 TOTAL.
02 TOTAL-BARIS OCCURS 2 TIMES.
03 TM OCCURS 2 TIMES PIC 999.
01 DATA1.
02 BARIS1 OCCURS 2 TIMES.
03 MATRIK1 OCCURS 2 TIMES PIC 99.
01 DATA2.
02 BARIS2 OCCURS 2 TIMES.
03 MATRIK2 OCCURS 2 TIMES PIC 99.
01 ISI-LAGI PIC X.
88 LAGI VALUE 'Y' , 'y'.
88 TIDAK VALUE 'T' , 't'.
SCREEN SECTION.
01 HAPUS-LAYAR.
02 BLANK SCREEN.
01 TAMBAH.
02 LINE 3 COLUMN 16 VALUE '+' HIGHLIGHT.
02 LINE 3 COLUMN 31 VALUE '=' HIGHLIGHT.
01 KURANG.
02 LINE 3 COLUMN 16 VALUE '-' HIGHLIGHT.
02 LINE 3 COLUMN 31 VALUE '=' HIGHLIGHT.
01 KALI.
02 LINE 3 COLUMN 16 VALUE '*' HIGHLIGHT.
02 LINE 3 COLUMN 31 VALUE '=' HIGHLIGHT.
PROCEDURE DIVISION.
MULAI.
DISPLAY HAPUS-LAYAR.
DISPLAY '=====MENU MATRIKS====='.
DISPLAY '1.PERTAMBAHAN'.
DISPLAY '2.PENGURANGAN'.
DISPLAY '3.PERKALIAN'.
DISPLAY '4.EXIT'.
DISPLAY 'MASUKKAN ANGKA [1-4] :'.
ACCEPT A.
IF A = 4 GO TO SELESAI.
REDI.
MOVE 3 TO LIN.
DISPLAY HAPUS-LAYAR.
PERFORM CARA1
VARYING I FROM 1 BY 1 UNTIL I > 2
AFTER J FROM 1 BY 1 UNTIL J > 2
COMPUTE LIN = 10.
PERFORM CARA2
VARYING I FROM 1 BY 1 UNTIL I > 2
AFTER J FROM 1 BY 1 UNTIL J > 2
IF A = 1 GO TO ASU.
IF A = 2 GO TO MINUS.
IF A = 3 GO TO BINTANG.
ASU.
PERFORM PROSESPLUS
VARYING I FROM 1 BY 1 UNTIL I > 2
AFTER J FROM 1 BY 1 UNTIL J > 2
DISPLAY HAPUS-LAYAR.
DISPLAY TAMBAH.
PERFORM HASIL
VARYING I FROM 1 BY 1 UNTIL I > 2
AFTER J FROM 1 BY 1 UNTIL J > 2
DISPLAY ' '.
DISPLAY 'TAMBAH LAGI [Y/T] :'.
ACCEPT ISI-LAGI.
IF LAGI GO TO MULAI.
IF TIDAK GO TO SELESAI.
MINUS.
PERFORM PROSESMINUS
VARYING I FROM 1 BY 1 UNTIL I > 2
AFTER J FROM 1 BY 1 UNTIL J > 2
DISPLAY HAPUS-LAYAR.
DISPLAY KURANG.
PERFORM HASIL
VARYING I FROM 1 BY 1 UNTIL I > 2
AFTER J FROM 1 BY 1 UNTIL J > 2
DISPLAY ' '.
DISPLAY 'KURANG LAGI [Y/T] :'.
ACCEPT ISI-LAGI.
IF LAGI GO TO MULAI.
IF TIDAK GO TO SELESAI.
BINTANG.
PERFORM PROSESKA
VARYING I FROM 1 BY 1 UNTIL I > 2
AFTER J FROM 1 BY 1 UNTIL J > 2
DISPLAY HAPUS-LAYAR.
DISPLAY KALI.
PERFORM HASIL
VARYING I FROM 1 BY 1 UNTIL I > 2
AFTER J FROM 1 BY 1 UNTIL J > 2
DISPLAY ' '.
DISPLAY 'KALI LAGI [Y/T] :'.
ACCEPT ISI-LAGI.
IF LAGI GO TO MULAI.
IF TIDAK GO TO SELESAI.
CARA1.
DISPLAY (3, 2) 'MATRIK 1'.
COMPUTE LIN = LIN + 1.
DISPLAY (LIN, 2) 'ELEMEN [', I, ', ', J, '] = '.
ACCEPT MATRIK1 (I, J).
CARA2.
DISPLAY (10, 2) 'MATRIK 2'.
COMPUTE LIN = LIN + 1.
DISPLAY (LIN, 2) 'ELEMEN [', I, ', ', J, '] = '.
ACCEPT MATRIK2 (I, J).
PROSESPLUS.
COMPUTE TM (I, J) = MATRIK1 (I, J) + MATRIK2 (I, J).
PROSESMINUS.
COMPUTE TM (I, J) = MATRIK1 (I, J) - MATRIK2 (I, J).
PROSESKA.
COMPUTE TM ( 1 , 1 ) = MATRIK1 ( 1 , 1 ) * MATRIK2 ( 1 , 1 )
+ MATRIK1 ( 1 , 2 ) * MATRIK2 ( 2 , 1 ).
COMPUTE TM ( 1 , 2 ) = MATRIK1 ( 1 , 1 ) * MATRIK2 ( 1 , 2 )
+ MATRIK1 ( 1 , 2 ) * MATRIK2 ( 2 , 2 ).
COMPUTE TM ( 2 , 1 ) = MATRIK1 ( 2 , 1 ) * MATRIK2 ( 1 , 1 )
+ MATRIK1 ( 2 , 2 ) * MATRIK2 ( 2 , 1 ).
COMPUTE TM ( 2 , 2 ) = MATRIK1 ( 2 , 1 ) * MATRIK2 ( 1 , 2 )
+ MATRIK1 ( 2 , 2 ) * MATRIK2 ( 2 , 2 ).
HASIL.
MOVE I TO LIN.
MOVE J TO COL.
MOVE MATRIK1 (I, J) TO M1.
MOVE MATRIK2 (I, J) TO M2.
MOVE TM (I, J) TO T.
COMPUTE LIN = LIN * 2.
COMPUTE COL = COL * 4.
DISPLAY (LIN, COL + 1) M1.
DISPLAY (LIN, COL + 16) M2.
DISPLAY (LIN, COL + 31) T.
SELESAI.
DISPLAY 'MAACIH KAKAK..'.
STOP RUN.
CONTOH PROGRAM FILE PADA COBOL
IDENTIFICATION DIVISION.
PROGRAM-ID. RELATIF.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT MHS ASSIGN TO DISK
ORGANIZATION IS RELATIVE
ACCESS MODE IS DYNAMIC
RELATIVE KEY IS NO-REL
FILE STATUS IS STATUS-SALAH.
DATA DIVISION.
FILE SECTION
FD MHS
LABEL RECORD IS STANDARD
VALUE OF FILE-ID IS 'MHS.DAT'
DATA RECORD IS RECMHS.
01 RECMHS.
02 NPM PIC 9(8).
02 NAMA PIC X(20).
02 KELAS PIC X(5).
WORKING-STORAGE SECTION.
01 JUDUL.
02 WS-NAMA PIC X(25).
02 WS-NPM PIC 9(8).
02 WS-KELAS PIC X(8).
02 NPM-CARI PIC 9(8).
01 TAMBAH-DATA PIC X.
88 LAGI VALUE 'Y', 'y'.
88 TDK VALUE 'T', 't'.
01 X PIC 9 VALUE 0.
77 STATUS-SALAH PIC XX.
77 NO-REL PIC 9(8).
77 PIL PIC X.
77 PIL2 PIC X.
77 PIL3 PIC X.
77 CR-NPMX PIC X VALUE 'Y'.
SCREEN SECTION.
01 HAPUS.
02 BLANK SCREEN.
01 MASUKAN.
02 LINE 5 COLUMN 24 VALUE 'NPM : '.
02 COLUMN PLUS 2 PIC X(8) TO NPM.
02 LINE 7 COLUMN 24 VALUE 'NAMA : '.
02 COLUMN PLUS 2 PIC X(20) TO NAMA.
02 LINE 9 COLUMN 24 VALUE 'KELAS : '.
02 COLUMN PLUS 2 PIC X(5) TO KELAS.
01 MENU.
02 LINE 5 COLUMN 27 '<< MENU >>'.
02 LINE PLUS 2 COLUMN 21 '[1] BUAT / INPUT FILE'.
02 LINE PLUS 1 COLUMN 21 '[2] TAMPIL FILE'.
02 LINE PLUS 1 COLUMN 21 '[3] CARI DATA '.
02 LINE PLUS 1 COLUMN 21 '[4] EXIT '.
02 LINE PLUS 2 COLUMN 21 'PILIH : '.
02 COLUMN PLUS 1 PIC X TO PIL.
01 CARI-X.
02 BLANK SCREEN.
02 LINE 5 COLUMN 25 'NPM YANG DICARI : '.
02 COLUMN PLUS 1 PIC X(8) TO NPM-CARI.
PROCEDURE DIVISION.
PROGRAM-UTAMA.
COMPUTE X = 0.
DISPLAY HAPUS.
DISPLAY MENU.
ACCEPT MENU.
IF PIL = '1' GO TO BUKA.
IF PIL = '2' GO TO TAMPIL.
IF PIL = '3' GO TO CARI.
IF PIL = '4' GO TO SELESAI.
BUKA.
OPEN OUTPUT MHS.
GO TO BUKA2.
BUKA2.
DISPLAY HAPUS.
DISPLAY MASUKAN.
ACCEPT MASUKAN.
COMPUTE NO-REL = NPM.
WRITE RECMHS.
DISPLAY (15, 23) 'MAU NAMBAH DATA [Y/T] ? '
ACCEPT TAMBAH-DATA.
IF LAGI GO TO BUKA2.
CLOSE MHS.
GO TO PROGRAM-UTAMA.
TAMPIL.
DISPLAY HAPUS.
DISPLAY (1, 1) 'NAMA'.
DISPLAY (1, 22) 'NPM'.
DISPLAY (1, 32) 'KELAS'.
OPEN INPUT MHS.
COMPUTE X = 1.
GO TO TAMPIL3.
TAMPIL3.
COMPUTE X = X + 1.
MOVE X TO LIN.
READ MHS NEXT RECORD AT END GO TO TAMPIL4.
MOVE NAMA TO WS-NAMA.
MOVE NPM TO WS-NPM.
MOVE KELAS TO WS-KELAS.
DISPLAY (LIN, 1) WS-NAMA.
DISPLAY (LIN, 22) WS-NPM.
DISPLAY (LIN, 32) WS-KELAS.
TAMPIL4.
ACCEPT PIL.
CLOSE MHS.
GO TO PROGRAM-UTAMA.
CARI.
MOVE 'N' TO CR-NPMX.
DISPLAY CARI-X.
ACCEPT CARI-X.
OPEN INPUT MHS.
GO TO CARI2.
CARI2.
READ MHS NEXT AT END GO TO CARI3.
MOVE NAMA TO WS-NAMA.
MOVE NPM TO WS-NPM.
MOVE KELAS TO WS-KELAS.
IF NPM-CARI = WS-NPM GO TO KETEMU.
GO TO CARI2.
KETEMU.
DISPLAY HAPUS.
DISPLAY (7, 23) 'DATA NPM : ' WS-NPM.
DISPLAY (9, 23) 'NAMA : ' WS-NAMA.
DISPLAY (11, 23) 'KELAS : ' WS-KELAS.
DISPLAY (15, 23) 'CARI DATA LAGI ? '.
ACCEPT ( , ) PIL2.
CLOSE MHS.
IF PIL2 = 'Y' OR PIL2 = 'y' GO TO CARI.
GO TO PROGRAM-UTAMA.
CARI3.
DISPLAY HAPUS.
DISPLAY 'DATA TIDAK ADA...'.
DISPLAY 'Press Escape / Enter Untuk Cari Lagi..'.
DISPLAY 'X Untuk Ke Menu Utama, Lalu Tekan Enter..'.
ACCEPT ( , ) PIL3.
CLOSE MHS
IF PIL3 = 'X' OR PIL3 = 'x' GO TO PROGRAM-UTAMA.
GO TO CARI.
SELESAI.
DISPLAY HAPUS.
DISPLAY (2, 2) 'Good Bye......'.
CLOSE MHS.
STOP RUN.
Jumat, 30 November 2012
MEMBUAT RUMAH PADA BAHASA C
#include <stdio.h>
#include <conio.h>
int main()
{
int z,m,e,u,j,i,k,l,n,p;
clrscr();
printf("\nMasukkan Tinggi Rumah : ");
scanf("%d",&z);
e=1;
for(u=1;u<=z;u++)
{
for (j=z-1;j>=u-1; j--)
{
printf(" ");
}
for (i=1;i<=e;i++)
{
printf ("*");
}
e=e+2;
for(p=1;p<=z*2+1;p++){
printf("_\\");
}
printf ("\n");
}
for(l=1;l<=z;l++)
{
for(k=1;k<=e;k++)
{
if (k==1){
printf("|");
}else if (k==e-1){
printf(" |");
for(n=1;n<=e*2;n++){
if (n==e*2){
printf("|");}
else{
printf(" ");}}
}else{
printf(" ");}
}
printf ("\n");
}
for (m=1;m<=e+e*2;m++){
printf("=");
}
getch();
}
jika ingin melihat output programnya klik di sini.
MEMBUAT FAKTORIAL PADA BAHASA C
#include <stdio.h>
#include <conio.h>
int main()
{
int b,i;
int total=1;
clrscr();
printf("\nMasukkan Sebuah Angka : ");
scanf("%d",&i);
printf("\n%d ! = ",i);
for (b=i;b>=1;b--)
{
if (b==1){
printf("%d ",b);
}else{
printf("%d * ",b);
}
total=total*b;
}
printf("= %d",total);
getch();
}
Jika mau output programnya klik di sini.
Senin, 26 November 2012
TREE PADA BAHASA C
1.Pengertian tree
Tree adalah
Kumpulan node yang saling terhubung satu sama lain dalam suatu kesatuan yang
membentuk layakya struktur sebuah pohon. Struktur pohon adalah suatu cara
merepresentasikan suatu struktur hirarki (one-to-many) secara grafis yang mirip
sebuah pohon, walaupun pohon tersebut hanya tampak sebagai kumpulan node-node
dari atas ke bawah. Suatu struktur data yang tidak linier yang menggambarkan
hubungan yang hirarkis (one-to-many) dan tidak linier antara elemen-elemennya.
2. Istilah-Istilah dalam Tree
Dalam mempelajari struktur data non linier ini, akan
ditemui banyak istilah-istilah yang dipergunakan untuk menyajikan sebuah tree.
Berikut ini akan dibahas istilah-istilah yang sering digunakan dalam tree.
2.1 Level (Tingkat)
Level
sebuah node adalah satu ditambah panjang path dari root ke node tersebut,
sehingga level root selalu satu. Jika suatu node terletak pada level N, maka
node-node yang merupakan child-nya terletak pada level N +1. Selain
definisi di atas, ada juga beberapa buku yang menyatakan bahwa root dinyatakan
sebagai level 0, dan node-node lainnya dinyatakan sebagai level 1 lebih tinggi
dari parent-nya. Buku ini menggunakan definisi yang pertama, yaitu
bahwa
root dikatakan berlevel 1.
2.2 Degree (Derajat)
Dikenal
dua macam degree/derajat dari sebuah node yaitu:
1. Out-degree
(atau sering disebut degree) yaitu jumlah subtree dalam node tersebut.
Degree dari leaf atau terminal node selalu nol.
2. In-degree
yaitu jumlah path yang masuk ke dalam node tersebut. In-degree dari
root selalu nol dan untuk node-node lainnya selalu satu.
2.3 Height (Tinggi)
atau Depth (Kedalaman)
Tinggi
atau kedalaman dari suatu tree adalah level maksimum dari node dalam tree
tersebut dikurangi satu. Untuk contoh tree di atas, tinggi tree tersebut adalah
4 - 1 = 3, karena level maksimumnya adalah 4.
2.4 Ancestor dan Descendant
Ancestor
suatu node yaitu semua node yang terletak dalam satu jalur dengan node tersebut
dari root sampai node yang ditinjau. Sebagai contoh, ancestor dari node N6
adalah N0, N1, dan N4. Descendant suatu node yaitu semua
node yang dapat dicapai dari node tersebut. Sebagai contoh, descendant dari node
N1 adalah N2, N3, N4, N5, dan N6.
2.5 Parent (Father) dan Child
(Son)
Parent
suatu node adalah sebuah node yang dapat mencapai node tersebut dengan path
tunggal. Sebagai contoh, parent dari N2 adalah N1, parent dari N5
adalah N4, parent dari N10 adalah N8, dan sebagainya. Child
suatu node adalah semua node yang dapat dicapai oleh node tersebut dengan sebuah
path saja. Sebagai contoh, child dari N1 adalah N2, N3,
dan N4; child dari N4 adalah N5 dan N6; dan
sebagainya.
2.6 Forest
Forest
adalah kumpulan tree yang tidak saling berhubungan (disjoint). Jika pada tree
di atas, node N0 dihapus menyebabkan terjadi sebuah forest dengan tiga tree.
2.7 Ordered Tree
Definisi
ordered tree yaitu Sebuah tree yang di dalamnya terdapat aturan untuk menyusun
node-node dalam level yang sama, atau sebuah tree dimana setiap subtree pada semua
node di dalamnya membentuk himpunan yang berurutan (ordered set).
2.8 m-ary
Tree
m-ary
tree adalah tree yang out-degree setiap node di dalamnya lebih kecil atau sama
dengan m. Apabila m = 2, maka disebut dengan binary tree. Untuk contoh
ordered tree di atas, juga dapat dikatakan sebagai 3-ary tree.
2.9 Balance
Tree
Balance
tree yaitu tree dimana leaf-leafnya terletak pada level h dan h-1,
sehingga jarak antara sebuah leaf dan leaf terbawah paling banyak 1.
2.10 Complete
m-ary Tree dan Full m-ary Tree
Complete
m-ary tree yaitu suatu m-ary tree yang out-degree setiap node di dalamnya
sama dengan nol (merupakan leaf) atau sama dengan m. Sedangkan full m-ary
tree adalah complete m-ary tree dimana leaf-leafnya terletak pada level yang
sama.
3.
Kunjungan Pada Pohon Biner
Sebuah pohon biner memiliki operasi traversal yaitu suatu
kunjungan pada suatu simpul tepat satu kali. Dengan melakukan kunjungan lengkap
kita akan memperoleh urutan informasi secara linier yang tersimpan di dalam
pohon biner. Terdapat tiga jenis kunjungan pada pohon biner, yaitu :
3.1
PREORDER
Kunjungan
jenis ini mempunyai urutan kunjungan sebagai berikut :
- Cetak
isi simpul yang dikunjungi.
- Kunjungi
cabang kiri.
- Kunjungi
cabang kanan.
Prosedur
untuk melakukan traversal secara PREORDER adalah sebagai berikut :
Procedure
PREORDER(Temp : Tree);
Begin
If Temp
<> NIL Then
Begin
Write(Temp^.Info,’
‘); {Cetak isi simpul}
PREORDER(Temp^.Kiri);
{Kunjungi cabang kiri}
PREORDER(Temp^.Kanan);
{Kunjungi cabang kanan}
End;
End;
3.2
INORDER
Kunjungan
jenis ini mempunyai urutan kunjungan sebagai berikut :
- Kunjungi
cabang kiri.
- Cetak
isi simpul yang dikunjungi.
- Kunjungi
cabang kanan.
Prosedur
untuk melakukan traversal secara INORDER adalah sebagai berikut:
Procedure
INORDER(Temp : Tree);
Begin
If Temp
<> NIL Then
Begin
INORDER(Temp^.Kiri);
{Kunjungi cabang kiri}
Write(Temp^.Info,’
‘); {Cetak isi simpul}
INORDER(Temp^.Kanan);
{Kunjungi cabang kanan}
End;
End;
3.3
POSTORDER
Kunjungan
jenis ini mempunyai urutan kunjungan sebagai berikut :
- Kunjungi
cabang kiri.
- Kunjungi
cabang kanan.
- Cetak
isi simpul yang dikunjungi.
Prosedur
untuk melakukan traversal secara POSTORDER adalah sebagai berikut:
Procedure POSTORDER(Temp
: Tree);
Begin
If Temp
<> NIL Then
Begin
POSTORDER(Temp^.Kiri);
{Kunjungi cabang kiri}
POSTORDER(Temp^.Kanan);
{Kunjungi cabang kanan}
Write(Temp^.Info,’
‘); {Cetak isi simpul}
End;
End;
Dalam pengembangan nantinya, tiga jenis kunjungan ini dapat
digunakan sebagai pencarian notasi infix, postfix dan prefix. Kunjungan
Preorder untuk mencari prefix, kunjungan Inorder untuk mencari postfix dan
kunjungan Postorder untuk mencari infix.
4. Contoh Soal
PREORDER, INORDER, DAN POSTORDER.
Jawaban
PREORDER : ABCDEFGHIJ
INORDER : DCEBFAIHJG
POSTORDER : DECFBIJHGA
Langganan:
Postingan (Atom)