Monday, September 23, 2019

UAS Mata Kuliah Mobile Programming, Kelas 06TPLE003 Reg C STMIK ERESHA Sem. Genap 2018-2019

Assalamu'alaikum Wr Wb,
Salam sejahtera untuk semua,

     Disini saya akan mencoba membuat sebuah aplikasi 'Penjualan E-Book' dengan menggunakan sistem Android, Oh yaa... disini kita juga akan menggunakan program untuk membuat aplikasi tersebut yaitu dengan menggunakan Android Studio, namun untuk running aplikasinya saya tidak menggunakan emulator bawaan yang ada pada android studio, melainkan dengan menginstall langsung pada device android saya yaitu Asus Zenfone Selfie 5,5 inch dengan versi atau sdk 'Marshmallow'.

     Pertama kita siapkan dan buka android studio


Kedua kita pilih template atau desain utamanya
 

Ketiga kita desain isian text dan button klik untuk desai yng diinginkan
 

Untuk desain saya buat sesederhana mungkin karea masih dalam tahap belajar


Source code untuk desain xmlnya


Desain untuk proses dimana kita kita bisa mengetahui total belanja dan uang kembaliannya


Source code untuk desain proses dimana akan muncul total belanja dan brapa kembaliannya


Source cod main activuty untuk tampilan dan pengisian pertama


Source code untuk proses aplikasinya


Tampila dimana device sudah diplugin dan siap untuk diinstall pada device android


Tampilan utk mengetahui kalau device berhasil di install


Setelah dirunning kemudian ada tampilan proses  installing pada device android dan berhasil


tampilan notifikasi proses install berhasil


Tampilan event log dari mulai grade build sampai install sukses


Tampilan ikon hasil instal pada device android seperti dibawah ini


Tampilan setelah aplikasi dibuka


Tampilan hasil pengisian pada kolom teks


Tampilan halaman kedua dengan text ttal belanja dan uang kembali


Aplikasi bisa direset ulang maka tampilan akan kosong kembali


Source Code Main Activity

package com.example.jualapp;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;import android.os.Bundle;import android.view.View;import android.widget.Button;import android.widget.EditText;import android.widget.TextView;import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
    private EditText edtnamapel, edtnamabar, edtjumlahbel, edtharga, edtuangbay;    private Button btnproses;    private Button btnhapus;    private Button btnexit;    private TextView txtnamapel;    private TextView txtnamabar;    private TextView txtjumlahbel;    private TextView txtharga;    private TextView txtuangbay;

    @Override    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);
        getSupportActionBar().setTitle("Asep Somala Shop");
        edtnamapel = (EditText) findViewById(R.id.namapelanggan);        edtnamabar = (EditText) findViewById(R.id.namabarang);        edtjumlahbel = (EditText) findViewById(R.id.jumlahbeli);        edtharga = (EditText) findViewById(R.id.harga);        edtuangbay = (EditText) findViewById(R.id.uangbayar);        btnproses = (Button) findViewById(R.id.tombol1);        btnhapus = (Button) findViewById(R.id.tombol2);        btnexit = (Button) findViewById(R.id.tombol3);        txtnamapel = (TextView) findViewById(R.id.namapelanggan);        txtnamabar = (TextView) findViewById(R.id.namabarang);        txtjumlahbel = (TextView) findViewById(R.id.jumlahbeli);        txtharga = (TextView) findViewById(R.id.harga);        txtuangbay = (TextView) findViewById(R.id.uangbayar);


        //memberikan action pada tombol proses
        btnproses.setOnClickListener(new View.OnClickListener() {

            @Override            public void onClick(View v) {
                String namapelanggan = edtnamapel.getText().toString().trim();                String namabarang = edtnamabar.getText().toString().trim();                String jumlahbeli = edtjumlahbel.getText().toString().trim();                String harga = edtharga.getText().toString().trim();                String uangbayar = edtuangbay.getText().toString().trim();
                double jb = Double.parseDouble(jumlahbeli);                double h = Double.parseDouble(harga);                double ub = Double.parseDouble(uangbayar);                String textUangBayar = Double.toString(ub);                double total = (jb * h);                String textTotal = Double.toString(total).trim();
                //pemberian if dan else untuk aturan pemberian bonus                String  bonus;
                if (total >=200000){
                    bonus = "Bonus : Mouse";
                } else if (total >=50000){
                    bonus  = "Bonus : Keyboard";                } else  if (total >=40000){
                    bonus = "Bonus : Harddisk";                } else {
                    bonus = "Bonus : Tidak Ada Bonus";                }
                double uangkembalian = (ub - total);                String textUangkembalian = Double.toString(uangkembalian);
                Intent x = new Intent(MainActivity.this, Proses.class);                x.putExtra("tb", textTotal);                x.putExtra("uk", textUangkembalian);                x.putExtra("bn", bonus);                x.putExtra("ub", textUangBayar);                startActivity(x);            }
        });        btnhapus.setOnClickListener(new View.OnClickListener() {
            @Override            public void onClick(View view) {

                txtnamapel.setText(" ");                txtnamabar.setText(" ");                txtharga.setText(" ");                txtuangbay.setText(" ");                txtjumlahbel.setText(" ");
                Toast.makeText(getApplicationContext(),"Data sudah direset", Toast.LENGTH_LONG).show();

            }
        });        btnexit.setOnClickListener(new View.OnClickListener() {
            public void onClick(View view) {

                moveTaskToBack(true);            }
        });    }
}

Source Code Proses Java
package com.example.jualapp;
import android.content.Intent;import android.os.Bundle;import android.os.PersistableBundle;import android.widget.TextView;import android.widget.Toast;
import androidx.annotation.Nullable;import androidx.appcompat.app.AppCompatActivity;
public class Proses extends AppCompatActivity {

    TextView totalBelanja;    TextView uangKembali;    TextView bonus;    TextView keterangan;

    @Override    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);        setContentView(R.layout.proses);
        getSupportActionBar().setTitle("Asep Somala Shop");
        totalBelanja = (TextView) findViewById(R.id.totalbelanja);        uangKembali = (TextView) findViewById(R.id.uangkembali);        bonus = (TextView) findViewById(R.id.bonus);        keterangan = (TextView) findViewById(R.id.keterangan);

        Intent y = getIntent();
        String tb = y.getStringExtra("tb");        String uk = y.getStringExtra("uk");        String bn = y.getStringExtra("bn");        String ub = y.getStringExtra("ub");
        double totBayar = Double.parseDouble(tb);        double totUb = Double.parseDouble(ub);        double totUk = Double.parseDouble(uk);

        totalBelanja.setText("Total Belanja : Rp. "+tb);        uangKembali.setText("Uang Kembali : Rp. "+uk);        bonus.setText(bn);

        if (totUb < totBayar){
            keterangan.setText("Keterangan : uang bayar kurang Rp " + (-totUk));            uangKembali.setText("Uang Kembali : Rp 0" );        }else{
            keterangan.setText("Keterangan : Tunggu Kembalian");            uangKembali.setText("Uang Kembali : " + totUk);        }

    }
}

Source Code Activity Main xml
<?xml version="1.0" encoding="utf-8"?><ScrollView xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:padding="30dp"    android:orientation="vertical"    tools:context=".MainActivity">
    <LinearLayout        android:layout_width="fill_parent"        android:layout_height="fill_parent"        android:orientation="vertical">        <LinearLayout            android:layout_width="match_parent"            android:layout_height="wrap_content"            android:orientation="horizontal">            <TextView                android:layout_width="wrap_content"                android:layout_height="wrap_content"                android:text="Nama Pembeli :  "                android:textStyle="bold"                android:textColor="@color/colorPrimary"/>            <EditText                android:layout_width="match_parent"                android:layout_height="wrap_content"                android:id="@+id/namapelanggan"                android:text="" />        </LinearLayout>
        <LinearLayout            android:layout_width="match_parent"            android:layout_height="wrap_content"            android:orientation="horizontal">            <TextView                android:layout_width="wrap_content"                android:layout_height="wrap_content"                android:text="Judul Ebook :  "                android:textStyle="bold"                android:textColor="@color/colorPrimary"/>            <EditText                android:layout_width="match_parent"                android:layout_height="wrap_content"                android:id="@+id/namabarang"                android:text="" />        </LinearLayout>        <LinearLayout            android:layout_width="match_parent"            android:layout_height="wrap_content"            android:orientation="horizontal">            <TextView                android:layout_width="wrap_content"                android:layout_height="wrap_content"                android:text="Jumlah Beli:  "                android:textStyle="bold"                android:textColor="@color/colorPrimary"/>            <EditText                android:layout_width="match_parent"                android:layout_height="wrap_content"                android:id="@+id/jumlahbeli"                android:text=""                android:inputType="number"/>        </LinearLayout>        <LinearLayout            android:layout_width="match_parent"            android:layout_height="wrap_content"            android:orientation="horizontal">            <TextView                android:layout_width="wrap_content"                android:layout_height="wrap_content"                android:text="Harga : Rp "                android:textStyle="bold"                android:textColor="@color/colorPrimary"/>            <EditText                android:layout_width="match_parent"                android:layout_height="wrap_content"                android:id="@+id/harga"                android:text=""                android:inputType="number"                android:layout_marginBottom="8dp" />        </LinearLayout>        <LinearLayout            android:layout_width="match_parent"            android:layout_height="wrap_content"            android:orientation="horizontal">            <TextView                android:layout_width="wrap_content"                android:layout_height="wrap_content"                android:text="Uang Bayar: Rp  "                android:textStyle="bold"                android:textColor="@color/colorPrimary"/>            <EditText                android:layout_width="match_parent"                android:layout_height="wrap_content"                android:id="@+id/uangbayar"                android:text=""                android:inputType="number"/>        </LinearLayout>        <Button            android:layout_marginTop="30dp"            android:layout_width="match_parent"            android:layout_height="wrap_content"            android:id="@+id/tombol1"            android:text="PROSES"            android:background="@color/colorAccent"            android:textStyle="bold"            android:textColor="#ffffff"            android:layout_marginBottom="8dp" />
        <LinearLayout            android:layout_marginTop="20dp"            android:layout_width="match_parent"            android:layout_height="wrap_content"            android:gravity="center"            android:orientation="horizontal">            <Button                android:layout_width="wrap_content"                android:layout_height="wrap_content"                android:id="@+id/tombol2"                android:text="RESET DATA"                android:background="@color/colorAccent"                android:textStyle="bold"                android:textColor="#ffffFF"/>            <Button                android:layout_width="wrap_content"                android:layout_marginLeft="20dp"                android:layout_height="wrap_content"                android:id="@+id/tombol3"                android:text="KELUAR"                android:background="@color/colorAccent"                android:textColor="#FFFFFF"                android:textStyle="bold"/>        </LinearLayout>    </LinearLayout></ScrollView>

Source Code Proses xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    xmlns:tools="http://schemas.android.com/tools"    android:layout_margin="10dp"    android:orientation="vertical"    tools:context=".Proses">

    <TextView        android:layout_marginTop="20dp"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="Total Belanja :"        android:textColor="@color/colorPrimary"        android:id="@+id/totalbelanja"        android:textStyle="bold"        android:textSize="18dp"        android:layout_marginBottom="8dp" />    <TextView        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="Uang Kembali :"        android:textColor="@color/colorPrimary"        android:id="@+id/uangkembali"        android:textStyle="bold"        android:textSize="18dp"        android:layout_marginBottom="8dp"/>    <TextView        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="Bonus :"        android:textColor="@color/colorPrimary"        android:id="@+id/bonus"        android:textStyle="bold"        android:textSize="18dp"        android:layout_marginBottom="8dp"/>    <TextView        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="Keterangan :"        android:textColor="@color/colorPrimary"        android:id="@+id/keterangan"        android:textStyle="bold"        android:textSize="18dp"        android:layout_marginBottom="8dp"/>
</LinearLayout>

 
Untuk tambahan list viewnya saya tinggal menambahkan file strings.xml yang sudah berisikan array list viewnya... source codenya seperti dibawah ini yaa
listbook.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".listebook">


    <LinearLayout
        android:id="@+id/line1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="10dp"
        android:layout_marginBottom="10dp"
        android:orientation="horizontal">


        <TextView
            android:id="@+id/text1"
            android:textColorHighlight="@color/colorPrimaryDark"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:textAlignment="center"
            android:textSize="16dp"/>
    </LinearLayout>


    <ListView
        android:id="@+id/listebook"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_below="@+id/line1"/>




</RelativeLayout>

listbook.java
package com.somala.aplikasipenjualane_book;import androidx.appcompat.app.AppCompatActivity;


import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;


import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;


public class listebook extends AppCompatActivity {



    TextView text;
    ListView listebook;
    //data yang akan dimasukkan ke listview
    private String [] masak = {"1. Ebook Belajar Coding","2. Ebook Belajar Matematika", "3. Ebook Belajar Program Web", "4. Ebook Belajar Desain Web","5. Ebook Belajar Arsitek Komputer","6. Ebook Belajar Jaringan Komputer","7. Ebook Belajar Komputer Grafik","8. Ebook Merakit Komputer","9. Ebook Belajar Komputer","10. Ebook Belajar Desainer Grafis"};
    //ArrayList untuk menampung data ebook
    private ArrayList<String> data;


    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.listebook);


        text = (TextView) findViewById(R.id.text1);
        text.setText("Selamat Belajar : ");


        listebook = findViewById(R.id.listebook);
        ArrayAdapter adapter = new ArrayAdapter(this,android.R.layout.simple_list_item_single_choice,masak);
        listebook.setAdapter(adapter);




        listebook.setOnItemClickListener(new AdapterView.OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {

                int itemke=i;
                String itemText=(String) listebook.getItemAtPosition(i);
                Toast.makeText(getBaseContext(), "Anda Meng Klik " +itemText, Toast.LENGTH_SHORT).show();


                if (itemText.equals("1. Ebook Belajar Coding")){

                    Intent belajarcoding= new Intent(adapterView.getContext(),belajarcoding.class);
                    startActivityForResult(belajarcoding, 0);
                }

            }

        });
    }

}

 belajarcoding.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".belajarcoding">


    <TextView
        android:id="@+id/textbelajarcoding"
        android:textColorHighlight="@color/colorPrimaryDark"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="20dp"
        android:textSize="14dp"
        android:textAlignment="gravity"
        android:text="@string/belajarcoding"/>




</RelativeLayout>

belajarcoding.java
package com.somala.aplikasipenjualane_book;
import androidx.appcompat.app.AppCompatActivity;


import android.os.Bundle;
import android.text.method.ScrollingMovementMethod;
import android.widget.TextView;


public class belajarcoding extends AppCompatActivity{



    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.listebook);


        TextView tv = (TextView) findViewById(R.id.textbelajarcoding);
        tv.setMovementMethod(new ScrollingMovementMethod());
    }

}







   Demikianlah alur pembuatan aplikasi sederhana yaitu aplikasi penjualan ebook dengan metode sederhana namun dengan tampilan dan masih bisa dikembangkan kembali agar tampilan lebih baik lagi. Semoga ilmu belajar coding membuat aplikasi android ini dapat bermanfaat untuk kita semua yang sedang ingin belajar mobile programming. Bilamana ada kesalahan dalam menulis dan pengambilan gambar sekiramya dapat dimaaffkan, tiada salahnya tetap berusaha belajar....  Wassalamu'alaikum wr wb.




Monday, July 15, 2019

UAS Teori Bahasa dan Automata Kelas 05TPLE03


Assalamu’alaikum warahmatullahi wabarakatuh,

Selamat datang kembali di pembahasan UAS yaitu mengenai rancangan ‘Mesin Moore’ pada aplikasi atau program JFLAP. Sebelumnya kita membahas dahulu apa itu ‘Mesin Moore’ dan untuk apa  tujuannya?.

Dalam teori komputasi sebagai prinsip dasar komputer, mesin Moore adalah otomasi fase berhingga (finite state automaton) di mana keluarannya ditentukan hanya oleh fase saat itu (dan tidak terpengaruh oleh bagian masukan/input).

Diagram fase (state diagram) dari mesin Moore memiliki sinyal keluaran untuk masing-masing fase. Hal ini berbeda dengan mesin Mealy yang mempunyai keluaran untuk tiap transisi.

Nama Moore diambil dari "Edward F. Moore" seorang ilmuwan komputer dan perintis mesin-fase (state-machine) yang menulis karangan "Gedanken-experiments on Sequential Machines". Mesin Moore didefinisikan dalam 6 (enam) Tupple, Mo = (Q,Σ,δ,S,∆,λ), dimana :

                Q = Himpunan state terbatas / letter
                Σ= Himpunan symbol input
                Δ= Fungsi Transisi
                 S = State awal S Q
                 ∆ =  Himpunan symbol output / karakter
                Λ= Fungsi output untuk setiap state

Pada mesin Moore, di awal proses selalu mencetak /menghasilkan karakter yang berada pada start state. Mesin Moore tidak mendefinisikan suatu bahasa dalam menerima untai-untai, karena setiap input string menghasilkan output string dan tidak terdapat final state.

Proses akan berhenti jika input letter/abjad terakhir dibaca dan output karakter terakhir dicetak. Jikalau input string misalnya n abjad, maka output string akan terdapat n+1 karakter karena terdapat n+1 state yang dilalui dalam prosesnya / path.

Tujuan inti dari mesin-mesin tersebut adalah untuk mendesain suatu model matematika untuk sirkuit sekuensial, Mesin Moore output berasosiasi dengan State. Baiklah, selanjutnya kita akan membahas hasil UAS yang dikerjakan pada pekan UAS kemarin.


Pertama kita akan membuka dahulu program JFLAP, yang kemudian kita pilih pada kolom ‘Mesin Moore’. Seperti gambar dibawah ini :


Kemudian kita rangkai atau susun desain statenya berdasarkan pilihan hasil modnya yaitu menggunakan Modulus 6, contoh gambar seperti dibawah ini :



Kemudian kita lanjut dengan menginput masing – masing state dengan input biner dengan cara seperti gambar dibawah ini, yaitu mengklik item ‘Input’ dan pilih yang ‘Multiple Run’ :

Bilamana terjadi kesalahan atau error pada input, akan muncul notifikasi seperti gambar dibawah ini, kasus seperti ini biasanya ada kesalahan pada state yang inputnya ada 2.

 Setelah muncul notifikasi  pada mesin moore yang tidak bisa di input, maka kita ikuti langkah selanjutnya yaitu mengklik menu ‘Test’ seperti contoh dibawah ini, kemudian pilih ‘Highlight Nondterminism.

Bila sudah di klik pada menu Test Highlight Nondeterminism, maka akan muncul gambar yang menunjukkan state yang bermasalah atau yang tidak bisa dipilih untuk diinput seperti gambar dibawah ini, kemudian kita hapus state yang tidak bisa diinput tsb dengan cara mengklik ikon dengan gambar tengkorak hitam kemudian pilih state tersebut yaitu state ‘q2’.
 

 Dalam kasus seperti ini rancangan desain yang pertama sudah tidak bisa diteruskan karena ada kesalahan atau kegagalan pada pembuatan state pada mesin moore, maka dari itu akan saya coba untuk membuat rancangan state yang baru seperti dibawah ini, dengan tetap menggunakan mod yang sama yaitu mod 6.



Setelah saya buat rancangan state pada mesin moore yang baru, kemudian kita lanjutkan dengan cara penginputan ‘Multiple Run’ seperti dibawah ini, 

 Baiklah, ternyata rancangan state yang baru ternyata berhasil untuk di test dengan cara Multiple Run. Setelah berhasil untuk pilihan Multiple Run, saya coba untuk menginput dengan pilihan input dibawah ini :



Setelah saya input dengan pilihan input dibawah ini, saya coba Running inputan tersebut dengan cara ‘Run Inputs’, maka akan mucul hasil dari inputan tersebut yang hasil inputan tersebut adalah hasil dari transisi dari state yang satu ke state yang lain.

Hasil dari running inputan tersebut di atas juga dapat kita buktikan dengan cara mengklik pilihan pada menu yang ada dipaling bawah yaitu pilihan ‘View Trace’. Setelah kita klik View Trace maka akan muncul pop upatau notifikasi gambar seperti dibawah ini :


 Pada notifikasi gambar tersebut menunjukkan arah panah yang berurutan kebawah dari state q0 sampai ke state yang lain, dan ini berlangsung seterusnya sampai pada inputan yang terakhir.
















Yang akhirnya kita sampai pada inputan yang terakhir yaitu pada input ‘1101’, yang pada notifikasi gambar tersebut juga menghasilkan hasil input yaitu ‘01301’.


Demikianlah tugas rancangan state  pada mesin moore dengan menggunakan program JFLAP. Bilamana ada kesalahan tulis atau kesalahan pada sumber tulisan saya mohonkan maaf, semoga tulisan ini dapat membantu untuk menjawab hasil dari tugas UAS ‘Teori Bahasa dan Automata’ pada modul 3 semester 5 ini. Sekian dari saya, saya ucapkan mohon maaf dan terima kasih.

Wassalamu’alaikum warahmatullahi wabarakatuh.