Stack Linier 2

897 views

Published on

Presentasi Algoritma dan Pemrograman dengan Bahasa C (Contoh program Stack Linier). Dibuat oleh Achmad SOlichin (http://achmatim.net)

Published in: Education, Technology, Business
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
897
On SlideShare
0
From Embeds
0
Number of Embeds
7
Actions
Shares
0
Downloads
30
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Stack Linier 2

  1. 1. STACK LINIER Contoh Program dan Penjelasannya Oleh Achmad Solichin Assisten Laboratorium Komputer FTI Universitas Budi Luhur 08 April 2004
  2. 2. <ul><li>Niscaya Allah akan meninggikan derajat orang-orang yang beriman di antara kamu dan orang-orang </li></ul><ul><li>yang diberi ilmu pengetahuan </li></ul><ul><li>beberapa derajat </li></ul><ul><li>Dan Allah Maha Mengetahui apa yang kamu kerjakan. </li></ul><ul><li>(QS Al-Mujaadalah : 11) </li></ul>
  3. 3. #include &quot;stdio.h&quot; #include &quot;conio.h&quot; #include &quot;stdlib.h&quot; #include &quot;ctype.h&quot; void push(); void pop(); void tampil(); void reset(); int x[5],dasar=0; int atas=0,pil,bil; HEADER FUNGSI
  4. 4. #include &quot;stdio.h&quot; #include &quot;conio.h&quot; #include &quot;stdlib.h&quot; #include &quot;ctype.h&quot; void push(); void pop(); void tampil(); void reset(); int x[5],dasar=0; int atas=0,pil,bil; DEKLARASI FUNGSI push();
  5. 5. DEKLARASI FUNGSI pop(); #include &quot;stdio.h&quot; #include &quot;conio.h&quot; #include &quot;stdlib.h&quot; #include &quot;ctype.h&quot; void push(); void pop(); void tampil(); void reset(); int x[5],dasar=0; int atas=0,pil,bil;
  6. 6. DEKLARASI FUNGSI tampil(); #include &quot;stdio.h&quot; #include &quot;conio.h&quot; #include &quot;stdlib.h&quot; #include &quot;ctype.h&quot; void push(); void pop(); void tampil(); void reset(); int x[5],dasar=0; int atas=0,pil,bil;
  7. 7. DEKLARASI FUNGSI reset(); #include &quot;stdio.h&quot; #include &quot;conio.h&quot; #include &quot;stdlib.h&quot; #include &quot;ctype.h&quot; void push(); void pop(); void tampil(); void reset(); int x[5],dasar=0; int atas=0,pil,bil;
  8. 8. DEKLARASI stack x[5], variabel dasar, atas, pil dan bil #include &quot;stdio.h&quot; #include &quot;conio.h&quot; #include &quot;stdlib.h&quot; #include &quot;ctype.h&quot; void push(); void pop(); void tampil(); void reset(); int x[5],dasar=0; int atas=0,pil,bil;
  9. 9. void main() { menu : clrscr(); gotoxy(25,3); printf(&quot;====================&quot;); gotoxy(25,4); printf(“ Menu pilihan : &quot;); gotoxy(25,5); printf(&quot;====================&quot;); gotoxy(25,6); printf(&quot; 1. Push &quot;); gotoxy(25,7); printf(&quot; 2. Pop &quot;);
  10. 10. <ul><li>void main() </li></ul><ul><li>{ </li></ul><ul><li>menu : </li></ul><ul><li>clrscr(); </li></ul><ul><li>gotoxy(25,3); printf(&quot;====================&quot;); </li></ul><ul><li>gotoxy(25,4); </li></ul><ul><li>printf(“ Menu pilihan : &quot;); </li></ul><ul><li>gotoxy(25,5); printf(&quot;====================&quot;); </li></ul><ul><li>gotoxy(25,6); printf(&quot; 1. Push &quot;); </li></ul><ul><li>gotoxy(25,7); printf(&quot; 2. Pop &quot;); </li></ul>FUNGSI main();
  11. 11. DEKLARASI LABEL void main() { menu : clrscr(); gotoxy(25,3); printf(&quot;====================&quot;); gotoxy(25,4); printf(“ Menu pilihan : &quot;); gotoxy(25,5); printf(&quot;====================&quot;); gotoxy(25,6); printf(&quot; 1. Push &quot;); gotoxy(25,7); printf(&quot; 2. Pop &quot;);
  12. 12. MEMBERSIHKAN LAYAR void main() { menu : clrscr(); gotoxy(25,3); printf(&quot;====================&quot;); gotoxy(25,4); printf(“ Menu pilihan : &quot;); gotoxy(25,5); printf(&quot;====================&quot;); gotoxy(25,6); printf(&quot; 1. Push &quot;); gotoxy(25,7); printf(&quot; 2. Pop &quot;);
  13. 13. MEMINDAHKAN CURSOR KE BARIS 25 , KOLOM 3 void main() { menu : clrscr(); gotoxy(25,3); printf(&quot;====================&quot;); gotoxy(25,4); printf(“ Menu pilihan : &quot;); gotoxy(25,5); printf(&quot;====================&quot;); gotoxy(25,6); printf(&quot; 1. Push &quot;); gotoxy(25,7); printf(&quot; 2. Pop &quot;); 3 25
  14. 14. gotoxy(25,8); printf(&quot;3. Preview &quot;); gotoxy(25,9); printf(&quot;4. Clear &quot;); gotoxy(25,10); printf(&quot;5. Exit &quot;); gotoxy(25,11); printf(&quot;===============&quot;); gotoxy(25,12); printf(&quot;Masukkan pilihan : &quot;); scanf(&quot;%i&quot;, &pil);
  15. 15. <ul><li>gotoxy(25,8); </li></ul><ul><li>printf(&quot;3. Preview &quot;); </li></ul><ul><li>gotoxy(25,9); </li></ul><ul><li>printf(&quot;4. Clear &quot;); </li></ul><ul><li>gotoxy(25,10); </li></ul><ul><li>printf(&quot;5. Exit &quot;); </li></ul><ul><li>gotoxy(25,11); printf(&quot;===============&quot;); </li></ul><ul><li>gotoxy(25,12); </li></ul><ul><li>printf(&quot;Masukkan pilihan : &quot;); scanf(&quot;%i&quot;, &pil); </li></ul><ul><li>SAMPAI DI SINI PROGRAM </li></ul><ul><li>AKAN MENAMPILKAN </li></ul><ul><li>MENU PILIHAN BERUPA : </li></ul><ul><li>Push </li></ul><ul><li>Pop </li></ul><ul><li>Preview </li></ul><ul><li>Clear </li></ul><ul><li>Exit </li></ul>
  16. 16. gotoxy(25,8); printf(&quot;3. Preview &quot;); gotoxy(25,9); printf(&quot;4. Clear &quot;); gotoxy(25,10); printf(&quot;5. Exit &quot;); gotoxy(25,11); printf(&quot;===============&quot;); gotoxy(25,12); printf(&quot;Masukkan pilihan : &quot;); scanf(&quot;%i&quot;, &pil); Masukkan Pilihan
  17. 17. gotoxy(25,8); printf(&quot;3. Preview &quot;); gotoxy(25,9); printf(&quot;4. Clear &quot;); gotoxy(25,10); printf(&quot;5. Exit &quot;); gotoxy(25,11); printf(&quot;===============&quot;); gotoxy(25,12); printf(&quot;Masukkan pilihan : &quot;); scanf(&quot;%i&quot;, &pil); MEMINTA INPUTAN BILANGAN INTEGER DAN DIMASUKKAN DALAM VARIABEL pil
  18. 18. switch(pil) { case 1 : gotoxy(25,13); printf(&quot;Masukkan bil = &quot;); scanf(&quot;%i&quot;, &bil); push(); getch(); break; case 2 : pop(); break; case 3 : tampil(); getch(); break; case 4 : reset(); getch(); break; case 5 : exit(0); break; } goto menu; }
  19. 19. <ul><li>switch(pil) </li></ul><ul><li>{ case 1 : gotoxy(25,13); printf(&quot;Masukkan bil = &quot;); scanf(&quot;%i&quot;, &bil); </li></ul><ul><li> push(); </li></ul><ul><li> getch(); </li></ul><ul><li> break; </li></ul><ul><li>case 2 : pop(); break; </li></ul><ul><li>case 3 : tampil(); getch(); break; </li></ul><ul><li>case 4 : reset(); getch(); break; </li></ul><ul><li>case 5 : exit(0); break; </li></ul><ul><li>} </li></ul><ul><li>goto menu; </li></ul><ul><li>} </li></ul>STRUKTUR switch … case AKAN MEMERIKSA ISI VARIABEL pil YANG AKAN MENENTUKAN PERINTAH MANA YANG DILAKSANAKAN Bentuk umum : switch(pilihan) { case 1 : <statemen>; break; case 2 : <statemen>; break; …… default : <statemen>; }
  20. 20. switch(pil) { case 1 : gotoxy(25,13); printf(&quot;Masukkan bil = &quot;); scanf(&quot;%i&quot;, &bil); push(); getch(); break; case 2 : pop(); break; case 3 : tampil(); getch(); break; case 4 : reset(); getch(); break; case 5 : exit(0); break; } goto menu; } JIKA ISI VARIABEL pil=1 MAKA STATEMENT DALAM BLOK INI AKAN DILAKSANAKAN
  21. 21. switch(pil) { case 1 : gotoxy(25,13); printf(&quot;Masukkan bil = &quot;); scanf(&quot;%i&quot;, &bil); push(); getch(); break; case 2 : pop(); break; case 3 : tampil(); getch(); break; case 4 : reset(); getch(); break; case 5 : exit(0); break; } goto menu; } MASUKKAN BILANGAN YANG AKAN MASUK KE STACK
  22. 22. switch(pil) { case 1 : gotoxy(25,13); printf(&quot;Masukkan bil = &quot;); scanf(&quot;%i&quot;, &bil); push(); getch(); break; case 2 : pop(); break; case 3 : tampil(); getch(); break; case 4 : reset(); getch(); break; case 5 : exit(0); break; } goto menu; } MEMINTA INPUTAN BILANGAN INTEGER DAN DIMASUKKAN DALAM VARIABEL bil
  23. 23. switch(pil) { case 1 : gotoxy(25,13); printf(&quot;Masukkan bil = &quot;); scanf(&quot;%i&quot;, &bil); push(); getch(); break; case 2 : pop(); break; case 3 : tampil(); getch(); break; case 4 : reset(); getch(); break; case 5 : exit(0); break; } goto menu; } PANGGIL FUNGSI push() YANG MENGINPUT ISI VARIABEL BIL KE DALAM STACK X
  24. 24. switch(pil) { case 1 : gotoxy(25,13); printf(&quot;Masukkan bil = &quot;); scanf(&quot;%i&quot;, &bil); push(); getch(); break; case 2 : pop(); break; case 3 : tampil(); getch(); break; case 4 : reset(); getch(); break; case 5 : exit(0); break; } goto menu; } break; AKAN KELUAR DARI switch SEHINGGA PERINTAH YANG ADA DI BAWAHNYA TIDAK AKAN DILAKSANAKAN
  25. 25. switch(pil) { case 1 : gotoxy(25,13); printf(&quot;Masukkan bil = &quot;); scanf(&quot;%i&quot;, &bil); push(); getch(); break; case 2 : pop(); break; case 3 : tampil(); getch(); break; case 4 : reset(); getch(); break; case 5 : exit(0); break; } goto menu; } JIKA NILAI VARIABEL pil=2 MAKA PANGGIL FUNGSI pop() UNTUK MENGELUARKAN ISI STACK
  26. 26. switch(pil) { case 1 : gotoxy(25,13); printf(&quot;Masukkan bil = &quot;); scanf(&quot;%i&quot;, &bil); push(); getch(); break; case 2 : pop(); break; case 3 : tampil(); getch(); break; case 4 : reset(); getch(); break; case 5 : exit(0); break; } goto menu; } JIKA NILAI VARIABEL pil=3 MAKA PANGGIL FUNGSI tampil() UNTUK MENAMPILKAN ISI STACK
  27. 27. switch(pil) { case 1 : gotoxy(25,13); printf(&quot;Masukkan bil = &quot;); scanf(&quot;%i&quot;, &bil); push(); getch(); break; case 2 : pop(); break; case 3 : tampil(); getch(); break; case 4 : reset(); getch(); break; case 5 : exit(0); break; } goto menu; } JIKA NILAI VARIABEL pil=4 MAKA PANGGIL FUNGSI reset() UNTUK MENGEMBALIKAN ISI VARIABEL atas dan dasar
  28. 28. switch(pil) { case 1 : gotoxy(25,13); printf(&quot;Masukkan bil = &quot;); scanf(&quot;%i&quot;, &bil); push(); getch(); break; case 2 : pop(); break; case 3 : tampil(); getch(); break; case 4 : reset(); getch(); break; case 5 : exit(0); break; } goto menu; } JIKA NILAI VARIABEL pil=5 MAKA PANGGIL FUNGSI exit(0) DIMANA PROGRAM AKAN SELESAI
  29. 29. switch(pil) { case 1 : gotoxy(25,13); printf(&quot;Masukkan bil = &quot;); scanf(&quot;%i&quot;, &bil); push(); getch(); break; case 2 : pop(); break; case 3 : tampil(); getch(); break; case 4 : reset(); getch(); break; case 5 : exit(0); break; } goto menu; } MENUJU KE LABEL menu
  30. 30. switch(pil) { case 1 : gotoxy(25,13); printf(&quot;Masukkan bil = &quot;); scanf(&quot;%i&quot;, &bil); push(); getch(); break; case 2 : pop(); break; case 3 : tampil(); getch(); break; case 4 : reset(); getch(); break; case 5 : exit(0); break; } goto menu; } AKHIR FUNGSI main()
  31. 31. void push() { if(atas<5) { x[atas] = bil; atas++; gotoxy(25,14); printf(&quot;%i telah masuk&quot;,bil); tampil(); } else { gotoxy(25,14); printf(&quot;Stack penuh&quot;); } } FLOWCHART PUSH() atas<5 x[atas]=bil atas++ penuh berhasil
  32. 32. <ul><li>void push() </li></ul><ul><li>{ if(atas<5) </li></ul><ul><li>{ x[atas] = bil; </li></ul><ul><li>atas++; </li></ul><ul><li>gotoxy(25,14); </li></ul><ul><li> printf(&quot;%i telah masuk&quot;,bil); </li></ul><ul><li>tampil(); </li></ul><ul><li>} else { </li></ul><ul><li> gotoxy(25,14); </li></ul><ul><li> printf(&quot;Stack penuh&quot;); </li></ul><ul><li>} </li></ul><ul><li>} </li></ul>FUNGSI push() YANG AKAN MENAMBAHKAN BILANGAN YANG DIINPUT KE DALAM STACK
  33. 33. void push() { if(atas<5) { x[atas] = bil; atas++; gotoxy(25,14); printf(&quot;%i telah masuk&quot;,bil); tampil(); } else { gotoxy(25,14); printf(&quot;Stack penuh&quot;); } } DALAM PROSES push() PERTAMA KALI DIPE- RIKSA APAKAH STACK SUDAH PENUH. JIKA atas MASIH KURANG DARI 5 (JUMLAH MAX STACK) MAKA STACK MASIH BISA DIISI
  34. 34. void push() { if(atas<5) { x[atas] = bil; atas++; gotoxy(25,14); printf(&quot;%i telah masuk&quot;,bil); tampil(); } else { gotoxy(25,14); printf(&quot;Stack penuh&quot;); } } ISI VARIABEL bil DISALIN KE STACK x INDEX YANG KE- atas
  35. 35. void push() { if(atas<5) { x[atas] = bil; atas++; gotoxy(25,14); printf(&quot;%i telah masuk&quot;,bil); tampil(); } else { gotoxy(25,14); printf(&quot;Stack penuh&quot;); } } POINTER atas DIGESER KE KANAN. atas = atas+1
  36. 36. void push() { if(atas<5) { x[atas] = bil; atas++; gotoxy(25,14); printf(&quot;%i telah masuk&quot;,bil); tampil(); } else { gotoxy(25,14); printf(&quot;Stack penuh&quot;); } } NYATAKAN BAHWA ISI VARIABLE bil TELAH MASUK KE STACK
  37. 37. void push() { if(atas<5) { x[atas] = bil; atas++; gotoxy(25,14); printf(&quot;%i telah masuk&quot;,bil); tampil(); } else { gotoxy(25,14); printf(&quot;Stack penuh&quot;); } } PANGGIL FUNGSI tampil() UNTUK ME- NAMPILKAN ISI STACK
  38. 38. void push() { if(atas<5) { x[atas] = bil; atas++; gotoxy(25,14); printf(&quot;%i telah masuk&quot;,bil); tampil(); } else { gotoxy(25,14); printf(&quot;Stack penuh&quot;); } } NYATAKAN STACK PENUH JIKA KONDISI ATAS<5 TIDAK TERPENUHI
  39. 39. void pop() { if(atas>0) { atas --; bil = x[atas]; gotoxy(25,13); printf(&quot;%i telah dihapus&quot;,bil); } else { gotoxy(25,13); printf(&quot;Stack kosong&quot;); } getch(); } FLOWCHART POP() atas>5 atas -- bil=x[atas] kosong terhapus
  40. 40. void pop() { if(atas>0) { atas --; bil = x[atas]; gotoxy(25,13); printf(&quot;%i telah dihapus&quot;,bil); } else { gotoxy(25,13); printf(&quot;Stack kosong&quot;); } getch(); } FUNGSI pop() YANG AKAN MENGELUARKAN BILANGAN DALAM STACK SATU PER SATU
  41. 41. void pop() { if(atas>0) { atas --; bil = x[atas]; gotoxy(25,13); printf(&quot;%i telah dihapus&quot;,bil); } else { gotoxy(25,13); printf(&quot;Stack kosong&quot;); } getch(); } DALAM PROSES pop() PERTAMA KALI DIPE- RIKSA APAKAH STACK KOSONG. JIKA atas MASIH LEBIH BESAR DARI 0 (NILAI AWAL atas ) MAKA STACK MASIH ADA ISINYA
  42. 42. void pop() { if(atas>0) { atas --; bil = x[atas]; gotoxy(25,13); printf(&quot;%i telah dihapus&quot;,bil); } else { gotoxy(25,13); printf(&quot;Stack kosong&quot;); } getch(); } POINTER atas DIGESER KE KIRI. atas = atas-1
  43. 43. void pop() { if(atas>0) { atas --; bil = x[atas]; gotoxy(25,13); printf(&quot;%i telah dihapus&quot;,bil); } else { gotoxy(25,13); printf(&quot;Stack kosong&quot;); } getch(); } ISI VARIABEL x[atas] DISALIN KE VARIABEL bil
  44. 44. void pop() { if(atas>0) { atas --; bil = x[atas]; gotoxy(25,13); printf(&quot;%i telah dihapus&quot;,bil); } else { gotoxy(25,13); printf(&quot;Stack kosong&quot;); } getch(); } NYATAKAN BAHWA ISI VARIABLE bil TELAH DIHAPUS DARI STACK
  45. 45. void pop() { if(atas>0) { atas --; bil = x[atas]; gotoxy(25,13); printf(&quot;%i telah dihapus&quot;,bil); } else { gotoxy(25,13); printf(&quot;Stack kosong&quot;); } getch(); } NYATAKAN STACK KOSONG JIKA KONDISI atas>0 TIDAK TERPENUHI
  46. 46. void tampil() { int i,baris; i = 0;baris=17; gotoxy(25,15); printf(&quot;==================&quot;); gotoxy(25,16); printf(&quot;Isi stack : &quot;); while(i<atas) { gotoxy(25,baris); printf(&quot;x[%i] = %2i&quot;, i, x[i]); i++; baris++; } gotoxy(25,baris); printf(&quot;================= &quot;); gotoxy(25,++baris); printf(&quot;Press any key ....&quot;); } FLOWCHART TAMPIL() int i=0; i<atas i++; cetak isi stack
  47. 47. void tampil() { int i,baris; i = 0;baris=17; gotoxy(25,15); printf(&quot;==================&quot;); gotoxy(25,16); printf(&quot;Isi stack : &quot;); while(i<atas) { gotoxy(25,baris); printf(&quot;º x = %2i&quot;, x[i]); i++; baris++; } gotoxy(25,baris); printf(&quot;================= &quot;); gotoxy(25,++baris); printf(&quot;Press any key ....&quot;); } PERULANGAN UNTUK MENAMPILKAN ISI STACK. PERULANGAN DIMULAI DARI i=0 SELAMA i<atas
  48. 48. void reset() { atas = 0; dasar = 0; printf(&quot;Stack telah dikosongkan.....&quot;); } FUNGSI reset() UNTUK MENGEMBALIKAN STACK KE KEADAAN SEMUA(AWAL) DIMANA atas=0 DAN dasar=0
  49. 49. SELESAI
  50. 50. Alhamdulillahi Robbil ‘Alamiin

×