papanoyt:: ayo pilih content yang ada di bawah ini di jamin gak nyesel..

Kamis, 10 Februari 2011

gerbang logika

  Gerbang logika merupakan dasar pembentukan sistem digital. Gerbang logika
beroperasi dengan bilangan biner, sehingga disebut juga gerbang logika biner.
Tegangan yang digunakan dalam gerbang logika adalah TINGGI atau RENDAH. Tegangan
tinggi berarti 1, sedangkan tegangan rendah berarti 0.

         Gerbang logika adalah rangkain dengan satu atau lebih signyal masukan tetapi hanya menghasilkan satu signyal. berupa tegangan tinggi dan tegangan rendah.
ada tujuh (7 )  gerbang logika yang dibagi atas dua (2 ) jenis yaitu 
1 . Gerbang logika inverter yaitu NOT (negasi)
2 . Gerbang logika Non Inverter yang terdiri dari 6 jenis yaitu 
      a. AND
      b. OR
      c. NAND
      d. NOR
      e. XOR
      f. XNOR
 Di bawah ini saya akan jelaskan masing-masing dari gerbang logika diatas :


   a. AND

gerbang logika AND bernilai 1 jika semua masukanya 1 satu . jika salah satu atau kesemua masukanya 0 maka hasilnuya adalah 0.
                                                SIMBOL GERBANG LOGIKA AND 


                                         Tabel kebenaranya adalah : 
input output
A B C
0 0 0
0 1 0
1 0 0
1 1 1


 b.    OR
        gerbang logika OR memiliki satu atau lebih inputan dan menghasilkan satu buah keluaran . jika semua inputan bernilai  0 maka hasilnya akan 0 . jika salah satu atau semua inputan bernilai 1 maka hasilnya 1.
                                             SIMBOL GERBANG LOGIKA OR  
                                         Tabel kebenaranya :
input output
A B C
0 0 0
0 1 1
1 0 1
1 1 1

c. NAND
gerbang logika NAND ( not end )  merupakan kebalikan dari AND . jika salah satu atau semua input benar atau berbilai 1 maka hasilnya benar atau 1. dan jika semua inputnya benar maka nilainya akan salah atau 0.
                                           SIMBOL GERBANG LOGIKA NAND
                                         Tabel kebenaranya :
input output
A B C
0 0 1
0 1 1
1 0 1
1 1 0

d. NOT
       Gerbang logika not selalu berlawanan dengan inputan , misalkan inpunya 0 maka hailnya 1 begitu juga sebaliknya.                SIMBOL GERBANG LOGIKA NOT
                                   Tabel Kebenaranya :

input output
0 1
1 0


e. NOR
       NOR atau di baca Not OR adalah kebalikan dari OR. jika salah satu atau semua inputan bernilai 1 maka hasilnya adalah 0 dan jika semua inputan bernilai 0 maka hasilnya adalah 1.

                                   SIMBOL GERBANG LOGIKA NOR
                                         Tabel Kebenaranya :
input output
A B C
0 0 1
0 1 0
1 0 0
1 1 0

f.  XOR
XOR  merupakan singkatan dari  Antivalen, Exclusive-OR. gerbang logika ini akan menghasilkan nilai output 1 jika salah satu dari nilai inputanya 1 . dan jika nilai input semuanya bernilai 0 atau 1 maka nilainya akan 0.

                                     SIMBOL GERBANG LOGIKA XOR
                                     Tabel Kebenaranya :
input output
A B C
0 0 0
0 1 1
1 0 1
1 1 0

g. XNOR
XNOR adalah singkatan dari Ekuivalen, Not-Exclusive-OR . XNOR adalah kebalikan dari XOR jika salah satu bernilai 1 maka hasilnya akan 0 dana jika semua inputnya bernilai 1 atau 0 maka hasilnya akan 1 .
                                           SIMBOL GERBANG LOGIKA XNOR

                                         Tabel Kebenaranya :

input output
A B C
0 0 1
0 1 0
1 0 0
1 1 1

                        A  ALJABAR BOOLEAN
 
Aljabar Boolean adalah struktur aljabar yang "mencakup intisari" operasi logika AND, OR dan NOR dan juga teori himpunan untuk operasi union, interseksi dan komplemen.

Link sumber: http://www.mank-artana.co.cc/2010/12/dasar-sistem-digita.html

generate random chracter ASCII

sy lumyan bingung pas ada si suruh bwt pemangkitan niali random untuk karakter ASCII, mana pake bahasa java lgi ...lumayan bingung tapi setelah cari-cari referensi dari mbah google akhirnya dapet juga...di bawah ni ada contoh source program  generate random chracter ASCII, pake bahasa program java..mudah mudahan dapet membantu temen-temen y......aplikasinya untuk pembentukan Password..


import java.util.Scanner;
import java.util.Random;
import java.lang.*;
import java.nio.charset.*;
import java.util.Arrays;

public class passwords {

   public static void main(String[] args)
  
   {

      
 Scanner in = new Scanner(System.in);     
 
 

 
 int userSelection;     
 int userLength;     
 int randNum;
 int randNum2;
 int randNum3;
 int randNum4;
        
        
System.out.println("                Password Generator Menu               ");
System.out.println();
System.out.println("******************************************************");
System.out.println("* [1] Lowercase Letters                              *");
System.out.println("* [2] Lowercase & Uppercase Letters                  *");
System.out.println("* [3] Lowercase, Uppercase, and Numbers              *");
System.out.println("* [4] Lowercase, Uppercase, Numbers, and Punctuation *");     
System.out.println("* [5] Quit                                           *");
System.out.println("******************************************************");
System.out.println();   
System.out.print("Enter Selection (1-5): ");
userSelection = in.nextInt(); 
if (userSelection == 5)
{
System.out.println();
System.exit(0);
}    
System.out.println();
System.out.print("Password Length (1-128): ");
userLength = in.nextInt();   
System.out.println();


if (userSelection == 1)
{
System.out.print("Password: ");
randNum2 = (int)((Math.random() * 26) + 97);

for(int i=0; i<userLength; i++){
                randNum2 = (int)((Math.random() * 26) + 97);
               System.out.print((char)randNum2);
          }
}

if (userSelection == 2)
{
    System.out.print("Password: ");

for(int i=0; i<userLength; i++){
    randNum2 = (int)((Math.random() * 52) + 65);
   
        if (randNum2 >= 91)
            {
               
                System.out.print((char)(randNum2 + 7));
            }
               
           
               System.out.print((char)randNum2);
          }
   
}

if (userSelection == 3)
{
    System.out.print("Password: ");
randNum2 = (int)((Math.random() * 9) + 48);

for(int i = 0; i<userLength; i++){
                randNum2 = (int)((Math.random() * 9) + 48);
               System.out.print((char)randNum2);
          }   
   
}

if (userSelection == 4)
{
    System.out.print("Password: ");
randNum2 = (int)((Math.random() * 88) + 33);

for(int i=0; i<userLength; i++){
                randNum2 = (int)((Math.random() * 88) + 33);
               System.out.print((char)randNum2);
          }   
       
}
System.out.println();
             
}
}

link:
http://www.java-forums.org/new-java/24004-randomly-generate-range-ascii-characters.html

Rabu, 09 Februari 2011

Rekursif

Rekursif
             Rekursif adalah salah satu metode dalam dunia matematika dimana definisi sebuah fungsi mengandung fungsi itu sendiri. Dalam dunia pemrograman, rekursi diimplementasikan dalam sebuah fungsi yang memanggil dirinya sendiri.
            Rekursif merupakan algoritma untuk memecahkan masalah menggunakan suatu fungsi yang memanggil dirinya sendiri. Sebenarnya permasalahan yang dapat diselesaikan menggunakan rekursi dapat diselesaikan tanpa rekursi namun hal tersebut sulit untuk dilakukan.Salah satu contoh implementasi rekusi adalah fungsi factorial
N! = 1 x 2 x 3 x 4 x … x(N-1) x N

Definisi
rekursif bisa menjelaskan situasi yang sangat kompleks dengan hanya sedikit kata-kata. Mendefinisikan istilah "ancestor" (nenek moyang) tanpa menggunakan rekursi mungkin akan sangat sulit seperti parent, atau grandparent, atau great-grandparent, atau great-great-grandparent, dan seterusnya. Tapi dengan mengatakan "dan seterusnya" maka tidak akan terlalu rumit. Hal yang sama terjadi ketika kita mendefinisikan sebuah "directory" sebagai "sebuah file yang merupakan daftar dari file-file, dimana beberapa file bisa merupakan daftar dari beberapa file, dimana beberapa dari file tersebut bisa merupakan daftar beberapa file, dan seterusnya". Begitu juga jika kita berusaha mendefinisikan statement dalam Java. Sebuah "statement" dalam Java bias berupa sebuah statement while, yang mana terdiri dari sebuah kata "while", sebuah kondisi bernilai boolean, dan suatu statement.
Rekursi bisa digunakan sebagai teknik programming. Sebuah subroutine rekursif adalah subroutine yang memanggil dirinya sendiri, baik secara langsung maupun tidak langsung. Program yang akan kita buat kali ini adalah algoritma rekursif untuk melakukan sorting pada sebuah array, mengurutkan item dari nilai terkecil ke yang terbesar. Algoritma Selection Sort dan Insertion sort cukup sederhana, tetapi keduanya agak lambat, ketika diterapkan pada array yang besar. Algoritma sortir yang paling cepat adalah Quicksort, sebuah algoritma rekursif.

List dan Rekursi
Rekursi dan list berjalan seiring seirama laksana fava beans dan chianti yang nikmat. Sebagai contoh, berikut ini merupakan algoritma untuk mencetak sebuah list dari bagian belakang:
  1. Pisahlah list ke dalam dua bagian: node pertama (sebagai kepala (head)) dan sisanya (sebagai ekor (tail)).
  2. Cetak ekornya dari belakang.
  3. Cetak kepalanya.
Tentu saja, langkah kedua, pemanggilan rekursinya, mengasumsikan bahwa kita sudah mempunyai suatu cara untuk mencetak list dari belakang. Tapi jika kita menganggap bahwa pemanggilan rekursi ini bekerja dengan baik – leap of faith – barulah kita boleh yakin kepada diri kita sendiri kalau algoritma ini telah bekerja dengan baik dan benar. Yang kita butuhkan adalah base case, lalu sebuah cara untuk membuktikan bahwa untuk seamyp list yang kita gunakan, kita akan bisa kembali lagi ke base case. Pilihan paling wajar untuk base case adalah sebuah list dengan satu elemen tunggal, tapi akan lebih baik kalau kita mau menggunakan list kosong, yang direpresentasikan dengan null.

public static void printBackward (Node list) {
if (list == null) return;
Node head = list;
Node tail = list.next;
printBackward (tail);
System.out.print (head);
}

Baris pertama merupakan base case yang tidak mengembalikan nilai apapun. Dua baris berikutnya memecah list menjadi dua; head dan tail. Sementara dua baris terakhir digunakan untuk mencetak list itu sendiri. Kita memanggil metode ini dengan cara yang sama seperti ketika kita memanggil printList: printBackward (node1);Hasilnya adalah sebuah backward list. Algoritma Quicksort didasarkan pada sebuah ide yang sederhana: Diberikan sebuah array, pilih item manapun dari array. Item yang dipilih tersebut selanjutnya kita sebut pivot. (Dalam praktek kali ini, kita akan gunakan item pertama dari array.) Pindah semua item yang lebih kecil dari pivot ke bagian awal list, dan pindahkan semua item yang lebih besar dari pivot ke akhir dari list. Sekarang, taruh pivot diantara dua kumpulan item tadi. Posisi pivot tersebut sudah tidak akan dipindah-pindah lagi. Kita sebut prosedur tersebut QuicksortStep.
  
contoh implementasi dari rekursif misalnya anagram.
algoritma anagram:
Start:

int size;
int count;
char[] charArray;


doAnagram(int newSize) {
    int limit;
    if (newSize == 1) // if too small, return;
      return;// for each position,
    for (int i = 0; i < newSize; i++) {
      doAnagram(newSize - 1); // anagram remaining
      if (newSize == 2) // if innermost,
        display();
      rotate(newSize); // rotate word
    }
  }

 // rotate left all chars from position to end
 rotate(int newSize) {
    int i;
    int position = size - newSize; // save first letter
    char temp = charArray[position]; //shift others left
    for (i = position + 1; i < size; i++)
      charArray[i - 1] = charArray[i]; //put first on right
    charArray[i - 1] = temp;
  }

Berikut adalah programnnya:
import java.io.*; // for I/O
//////////////// AMY ///////////////////
class anagram
{
 static int size;
 static int count;
 static char[] arrChar = new char[100];
 public static void main(String[] args) throws IOException
 {
  System.out.print("Masukkan Kata : "); // get word
  System.out.flush();
  String input = getString();
  size = input.length(); // find its size
  count = 0;
  for(int j=0; j<size; j++) // put it in array
  arrChar[j] = input.charAt(j);
  doAnagram(size); // anagram it
} // end main()

public static void doAnagram(int newSize)
{
 if(newSize == 1) // if too small,
 return; // go no furt her
 for(int j=0; j<newSize; j++) // for each position,
{
 doAnagram(newSize-1); // anagram remaining
 if(newSize==2) // if innermost,
 displayWord(); // display it
 rotate(newSize); // rotate word
  }
}
// rotate left all chars from position to end

public static void rotate(int newSize)
{
 int j;
 int position = size - newSize;
 char temp = arrChar[position]; // save first letter
 for(j=position+1; j<size; j++) // shift others left
 arrChar[j-1] = arrChar[j];
 arrChar[j-1] = temp; // put first on right
}


public static void displayWord()
{
 if(count < 99)
 System.out.print(" ");
 if(count < 9)
 System.out.print(" ");
 System.out.print(++count + " ");
 for(int j=0; j<size; j++)
 System.out.print( arrChar[j] );
 System.out.print(" ");
 System.out.flush();
 if(count%6 == 0)
 System.out.println("");
}

public static String getString() throws IOException
{
 InputStreamReader isr = new InputStreamReader(System.in);
 BufferedReader br = new BufferedReader(isr);
 String s = br.readLine();
 return s;
 }
}

hasil running program :




TEKNIK ITERATIF & REKURSIF

TEKNIK ITERATIF
Teknik Iteratif merupakan suatu teknik pembuatan algoritma dengan pemanggilan procedure beberapa kali atau hingga suatu kondisi tertentu terpenuhi
Contoh :
Teknik Iteratif pada algoritma untuk menghitung faktorial dari bilangan bulat positif n, adalah sebagai berikut :
Function FAK (n : integer) : integer
FAK=1
For i = 1 TO n
FAK = FAK * i
NEXT i
END FAK
Gambaran jalannya proses algoritma tersebut adalah sebagai berikut :
Misal n = 5, maka : FAK = 1, kemudian

i                            FAK      
1                        1 * 1 = 1
2                        1 * 2 = 2
3                        2 * 3 = 6
4                        6 * 4 = 24
5                        24 * 5 = 120

Contoh :
BARISAN BILANGAN FIBBONACI → 1, 1, 2, 3, 5, 8, 13, 21, . . .
Teknik Iteratif pada algoritma untuk menentukan suku ke-n dari barisan bilangan Fibbonaci, adalah sebagai berikut :

1. Set x, y, n, i, f : integer
2. x ← 1 ; y ← 1
3. If n 〉 2 then
                       begin
4. for i ← 3 to n do
                      begin
5. F ← x + y
6. x ← y
7. y ← F
                        end
                       else
8. F ← x
9. Write(F)
                        End

Gambaran jalannya proses algoritma tersebut adalah sebagai berikut :
Misal n = 5, maka :
x=1, y=1, kemudian

i                   F                        x                        y
3           1 + 1 = 2                 1                        2
4           1 + 2 = 3                 2                        3
5           2 + 3 = 5                 3                        5

TEKNIK REKURSIF
Teknik Rekursif merupakan salah satu cara pembuatan algoritma dengan pemanggilan procedure atau function yang sama
Contoh :
Teknik Rekursif pada algoritma untuk menghitung faktorial dari bilangan bulat positif n, adalah sebagai berikut :

Function FAK (n : integer) : integer
1. If n := 0 then FAK := 1
2. Else FAK := n * FAK(n-1)

Gambaran jalannya proses algoritma tersebut adalah sebagai berikut :
Misal n = 5, maka :


Contoh :
BARISAN BILANGAN FIBBONACI → 1, 1, 2, 3, 5, 8, 13, 21, . . .
Teknik Rekursif pada algoritma untuk menentukan suku ke-n dari barisan bilangan Fibbonaci, adalah sebagai berikut :

Procedure F(n : integer) : integer
1. If n ≤ 2 then F(n) = 1
    else F(n) = F(n-1) + F(n-2)
    Endif
    End
Gambaran jalannya proses algoritma tersebut adalah sebagai berikut :
Misal n = 5, maka :


Perbedaan Antara Teknik Iteratif dan Rekursif : 
            ITERATIF                                                 REKURSIF                          
Tidak ada variabel lokal baru                  Ada variabel lokal baru
Program tidak sederhana                       Program menjadi lebih sederhana

algoritma serching/pencarian

oleh:
M septiadi rangga permana
f1b 006 054
teknik elektro. Bid keahlian Informatika  UNRAM


 buAT tmen2 yang mau belajar tentang algoritma serching mkin catatan ini bisa membantu temen2..di catatan ini nantinya algoritma serching akan di implemntasikan dalm program sederhana menggunakan bahasa java.

Bila jumlah data sudah demikian besar, dibutuhkan suatu metode untuk mendapatkan data yang dibutuhkan. Beberapa metode pengorganisasian data telah membuat proses pencarian data menjadi lebih efisien

          1.      Sequential Searching.
Metode ini merupakan metode pencarian yang paling sederhana. Algoritma ini dapat diterapkan pada daftar dalam bentuk array atau linked list. Algoritma ini menganalisa tiap key dari masing-masing node data. Jika data yang dicari ditemukan maka indeks atau pointer dari node tersebut akan dikembalikan. Jika data tidak ditemukan, maka nilai -1 yang dikembalikan. Jumlah pembandingan yang dilakukan ditentukan oleh posisi dari data yang dicari. Jika data berada pada posisi pertama maka hanya diperlukan satu kali pembandingan sementara jika data berada pada urutan paling akhir dibutuhkan N kali pembandingan. Maka rata-rata jumlah pembandingan adalah (N + 1)/2
          2.      Index Sequential Searching.
Ada teknik lain untuk meningkatkan efisiensi dengan melakukan pencarian pada data terurut. Jika data tidak terurut diperlukan sejumlah ruang untuk menyimpan indeks dari data. Indeks ini berisi key dari masing-masing data. Indeks ini, disebut iindex, dipecah menjadi beberapa kelompok dan nilai key dari masing-masing kelompok dicatat dalam indeks kedua, misalnya kindeks. Pencarian data dilakukan pada indeks kedua dengan kindeks[i] ≤ key < kindeks[i+1]. Sehingga pencarian tinggal dilakukan pada iindeks[kindeks[i]] hingga iindeks[kindeks[i+1]] tersebut.
          3.      Binary Search
Metode yang paling efisien  pada table sekuensial adalah binary search. Pada dasarnya data yang dicari dibandingkan dengan elemen yang berada di tengah. Bila cocok maka data tersebut dikembalikan, bila tidak pencarian dilanjutkan pada setengah bagian kiri atau setengah bagian kanan. Masing-masing bagian dilakukan proses yang sama hingga data yang diinginkan ditemukan

Implementasi program dengan java:
 program untuk mencari modus dari suatu deret data
Algoritma
algoritma modus
for(int i=0 to panjang_a)
   begin 
         int f=0;
         int sama=a[i];
         for (int j=0 to panjang_a)
               begin
                     if (a[j]==sama) f++;
               end for
               t[i]=f;
   end for


int terbesar=t[0];
int indek=0;
for (int i=0 to panjang_t)
   begin
         if (terbesar<t[i])

               terbesar=t[i]; indek=i;

  end for
message"modus: "+a[indek];


//////////////////////////////////////////////////////////////////////class

import java.util.Scanner;

public class modus
{
      static Scanner b=new Scanner(System.in);
      public  int a[] = new int [14];
      public  void input()
      {
                  System.out.println("inputkan "+a.length+" data");
                  for (int i=0; i<a.length; i++)
                  {
                              a[i]=b.nextInt();            

                  }
      }


int Modus()
{
//menampilkan data modus
int[] t=new int[a.length];
for(int i=0;i<a.length;i++)

         int f=0;
         int sama=a[i];
         for (int j=0;j<a.length;j++)
               {
                     if (a[j]==sama) f++;
               }
               t[i]=f;
   }


int terbesar=t[0];
int indek=0;
for (int i=0;i<t.length;i++)
   {
         if (terbesar<t[i])
         {
               terbesar=t[i]; indek=i;
         }
}
System.out.println("\nmodus: "+a[indek]);
return a[indek];
}
}

 class utama
{
   public static void main(String []args)
{
   modus b=new modus();
   b.input();
   System.out.println();
   b.Modus();
}
}


////////////////////////////////////////////////////////////////////////penjeasan

public class modus
{
   static Scanner b=new Scanner(System.in);
                public  int a[] = new int [14];
Script diatas merupakan pendeklarasian class modus. Terdapat pendeklarasian array a dengan tipe integer dan panjang maks = 14.

public  void input()
   {
   System.out.println("inputkan "+a.length+" data");
   for (int i=0; i<a.length; i++)
         {
               a[i]=b.nextInt();      

         }
                }

Script diatas merupakan pendeklarasian method input yang digunakan untuk menginputkan sejumlah nilai yang akan dicari modusnya. Terdapat perulangan for dalam proses penginputannya, sehingga jumlah data yang diinputkan sebanyak panjang array a, dalam hal ini sebanyak 14

{
                     if (a[j]==sama) f++;
               }
               t[i]=f;
   }


int terbesar=t[0];
int indek=0;
for (int i=0;i<t.length;i++)
   {
         if (terbesar<t[i])
         {
               terbesar=t[i]; indek=i;
         }
}
System.out.println("\nmodus: "+a[indek]);
return a[indek];
}
}
Pada method modus(), terdapat dua buah bagian yaitu method untuk mencari bilangan yang sama, kemudian jumlah dari bilangan yang sama akan menjadi input dari matriks t[]. Setelah itu bagian pegecekan, pada bagian ini, kita melakukan pengecekan terhadap isi dari dari matriks t[]. Jika ditemukan nilai terbesar pada matriks t[], kemudian indeksnya ditandai. Setelah ditandai nilai indeks itulah yang akan dipakai untuk mengetahui pada matrik a[] nilai modus yang dicari.


class utama
{
   public static void main(String []args)
{
   modus b=new modus();
   b.input();
   System.out.println();
   b.Modus();
}
}

Script dia tas merupakan script dari class utama, pada class ini kita melakukan instasiasi objek b dari class modus. Kemudian kita memanggil method input untuk menginputkan nilai ke dalam matrik a[]. Dan method Modus(), untuk melakukan pencarian modus dari deret yang telah kita punya yaitu derte pada matris a[].



smoga catatan ini bisa bermanfaat buat temen2 smuanya thanks....
reypapanoyt.....