Anda di halaman 1dari 46

Universitas Pancasakti

Jl. Andi Mangerangi No.73, Mamajang Dalam, Kec. Mamajang, Kota Makassar, Sulawesi Selatan 90132
Tel(0411) 871306
http:/www.unpacti.ac.id

MODUL
PRAKTIKUM
ALGORITMA &
PEMROGRAMAN
2019 / 2020
Oleh : Jeffry (jeffryfikom19@gmail.com)
DAFTAR ISI

Contents
KATA PENGANTAR ________________________________________________________________________________________1
PENGENALAN _____________________________________________________________________________________________2
Algoritma ______________________________________________________________________________________________________ 2
Go Lang ________________________________________________________________________________________________________ 2
Struktur Dasar Go Lang _______________________________________________________________________________________ 2
Command ______________________________________________________________________________________________________ 4
Command go run ___________________________________________________________________________________________ 4
Command go test ___________________________________________________________________________________________ 5
Command go build__________________________________________________________________________________________ 6
Command go install_________________________________________________________________________________________ 6
baris komentar ________________________________________________________________________________________________ 7
Komentar Inline ____________________________________________________________________________________________ 7
Komentar Multiline _________________________________________________________________________________________ 8

VARIABEL DAN TIPE DATA _______________________________________________________________________________9


Variabel ________________________________________________________________________________________________________ 9
Tipe Data _______________________________________________________________________________________________________ 9
Jenis Tipe Data Golang ______________________________________________________________________________________ 9
Aturan Penulisan Tipe data Golang ________________________________________________________________________ 9
KONSEP INPUT/OUTPUT ______________________________________________________________________________ 12
Operator ______________________________________________________________________________________________________ 12
Operator Aritmatika _______________________________________________________________________________________ 12
Operator Perbandingan ___________________________________________________________________________________ 12
Operator Logika____________________________________________________________________________________________ 13
Mengambil input dan menampilkan output _________________________________________________________________ 14
Cara Mengambil Nilai Input _______________________________________________________________________________ 14
KUIS ______________________________________________________________________________________________________ 17
SELEKSI KONDISI _______________________________________________________________________________________ 18
Pernyataan if – else ___________________________________________________________________________________________ 18
DAFTAR ISI

Pilihan Tunggal ____________________________________________________________________________________________ 18


Pilihan Ganda ______________________________________________________________________________________________ 19
Pilihan Majemuk ___________________________________________________________________________________________ 22
pernyataan switch - case _____________________________________________________________________________________ 23
Mengkombinasaikan pernyataan Switch – Case __________________________________________________________ 24
Seleksi Kondisi Bersarang _________________________________________________________________________________ 25
KUIS ______________________________________________________________________________________________________ 26
PERULANGAN (LOOPING) _____________________________________________________________________________ 27
Perulangan Menggunakan for ________________________________________________________________________________ 27
perulangan for dengan ARGUMEN HANYA kondisi _________________________________________________________ 28
Penggunaan Keyword forTanpa Argumen ___________________________________________________________________ 28
PERULANGAN FOR – RANGE_________________________________________________________________________________ 29
PERULANGAN for bersarang _________________________________________________________________________________ 30

UTS _______________________________________________________________________________________________________ 31
FUNGSI___________________________________________________________________________________________________ 32
penerapan Fungsi_____________________________________________________________________________________________ 32
Membuat Fungsi dengan Parameter _________________________________________________________________________ 33
Membuat Fungsi Tanpa Nilai Balik___________________________________________________________________________ 35
LARIK (ARRAY) _________________________________________________________________________________________ 38
Array Multidimensi ___________________________________________________________________________________________ 40
PENGENALAN POINTER________________________________________________________________________________ 41
Penerapan Pointer ____________________________________________________________________________________________ 41
Parameter Pointer ____________________________________________________________________________________________ 42
DAFTAR PUSTAKA ______________________________________________________________________________________ 43
KATA PENGANTAR

KATA PENGANTAR

Page 1
PENGENALAN

PENGENALAN
ALGORITMA
Asal kata Algoritma berasal dari nama Abu Ja’far Mohammed Ibnu Musa al-Khowarizmi, ilmuan Persia
yang menulis kitab al jabr w’al-muqabala (rules of restoration and reduction) sekitar tahun 825 M.

Dalam matematika dan ilmu komputer, algoritma adalah urutan atau langkah-langkah untuk memecahkan
masalah yang ditulis secara berurutan atau urutan logis pengambilan keputusan untuk menyelesaikan
suatu masalah. Sehingga, algoritma pemrograman adalah urutan atau langkah-langkah untuk
menyelesaikan masalah pemrograman komputer.

Algoritma dapat dituliskan dengan banyak cara, mulai dari menggunakan bahasa alami yang digunakan
sehari-hari, simbol grafik bagan alir, sampai menggunakan Bahasa pemograman, Seperti Go Lang, C, C++,
dll.

GO LANG
Go Lang biasa disebut sebagai GO merupakan Bahasa pemrograman yang bersifat open source dan
dikembangkan di Google oleh Robert Griesemer, Rob Pike, dan Ken Thompson pada tahun 2007 dan mulai
diperkenalkan di publik tahun 2009.

Golang didasari oleh Bahasa C dan C++ sehingga memilki sintaks penulisan yang hamper mirip.

Kelebihan Go :

• Mendukung konkurensi di level bahasa dengan pengaplikasian cukup mudah


• Mendukung pemrosesan data dengan banyak prosesor dalam waktu yang bersamaan (pararel
processing)
• Memiliki garbage collector
• Proses kompilasi sangat cepat
• Bukan bahasa pemrograman yang hirarkial, menjadikan developer tidak perlu ribet memikirkan
segmen OOP-nya
• Package/modul yang disediakan terbilang lengkap. Karena bahasa ini open source, banyak sekali
developer yang juga mengembangkan modul-modul lain yang bisa dimanfaatkan.

STRUKTUR DASAR GO LANG


Umumnya, GO memiliki struktur dasar sebagai berikut :

1. Deklarasi Package
2. Import Library
3. Bagian Fungsi Utama / Main Method

Page 2
PENGENALAN

4. Ekspresi

Untuk melihat lebih jelas, perhatikan source code di bawah ini:

package main

import (
"fmt"
)

func main(){
fmt.Println("Belajar Golang di Ilkom Pancasakti")
}

Analisis :

1. Deklarasi Package
Pada awal program ditulis package main yang merupakan deklarasi package. Package adalah suatu
cara untuk mengorganisasikan file yang ada atau bisa di bilang nama folder yang tersedia. Di Golang
satu file dapat di jalankan ketika mempunya package main.
Jika ternyata file program kita terdapat di root project, maka deklarasi package menggunakanmain.

package main

Namun, biasanya dalam satu folder project terdapat beberapa modul yang biasanya digunakan agar
program lebih rapi dan terstruktur. Misalkan kita asumsikan di dalam project terdapat folder dengan
nama “program” dan di dalam folder terdapat file “hello.go” maka penulisan deklarasi seperti berikut:
Program akan error/terjadi kesalahan ketika package tidak dideklarasikan.
2. Import Library
Import digunakan untuk memanggil library-library yang akan digunakan dalam menulis kode
program. Pada contoh di atas digunakan perintah untuk memanggil library dengan nama fmt. Library
merupakan sekumpulan fungsi yang di proses sedemikian rupa untuk kita gunakan fungsi nya. Dengan
menggunakan library kita lebih di mudahkan untuk membuat suatu program.

Page 3
PENGENALAN

import (
"fmt"
)

3. Main Method
Di dalam bahasa Golang harus ada satu nama method utama, dimana method tersebut di eskeksusi
pertama kali saat program tersebut dijalankan, yaitu method main(). Tanpa method main() maka
program tidak dapat di jalankan.

4. Ekspresi
Bahassa lain ekspresi yaitu statement, eksrepsi merupakan sebuah kode bagian terkecil. Kode tersebut
bisa diartikan suatu kegiatan yang dilakukan. Pada contoh di atas saya menggunakan ekspresi
penulisan string yaitu:

fmt.Println("Belajar Golang di Ilkom Pancasakti")

Kode diatas akan menghasilkan tulisan “Belajar Golang di Ilkom Pancasakti” di layar monitor. Ekspresi
bisa dikatakan sebagai sebuah baris kode. Di golang berbeda dengan bahasa lain, dimana akhir baris
tidak perlu menambahkan kode titik koma(;).

COMMAND
Go menggunakan Command Line Interface (CLI) untuk setiap proses, testing, dan eksekusi program.

Command go run
Command go run digunakan untuk eksekusi file program (file ber-ekstensi .go). Cara penggunaannya
dengan menuliskan command tersebut diikuti argumen nama file.

Praktikum :

Tuliskan Algoritma untuk menulis “Belajar Golang di Ilkom Pancasakti” dan terjemahkan ke dalam Bahasa
pemrograman golang dengan nama program hello!

Spesifikasi

Input : -

Output : “Belajar Golang di Ilkom Pancasakti”

Proses : menulis “Belajar Golang di Ilkom Pancasakti”

Page 4
PENGENALAN

ProgramHELLO
{ menulis “Belajar Golang di Ilkom Pancasakti” ke piranti keluaran}

Kamus

Algoritma :
pesan ⟵ “Belajar Golang di Ilkom Pancasakti”
output (pesan)

Gbr. 1

Analisis :

Pada Gbr. 1 di atas merupakan contoh eksekusi program dengan menggunakan perintah go run. Dimana
sebelumnya telah dibuat suatu program dengan nama file hello.go

Command go test
Go menyediakan package testing, berguna untuk keperluan unit testing. File yang akan di-test harus ber-
suffix _test.go.

Contoh:

Gbr 2.

Analisis:

Page 5
PENGENALAN

Gbr 2 merupakan contoh eksekusi program menggunakan perintah go test. Dapat dilihat bahwa nama file
yang digunakan harus bersuffix _test.go sehingga program dapat dieksekusi.

Command go build
Perintah ini berfungsi untuk mengkompilasi file program. Pada dasarnya, ketika perintah go run dijalankan
juga terjadi proses kompilasi yang disimpan di file temporary dan kemudian file dijalankan. Berbeda
dengan perintah go build yang menghasilkan file executable pada folder yang sedang aktif.

Contoh :

Gbr. 3

Analisis:

Gbr 3 memperlihatkan bahwa perintah go build menghasilkan file executable yaitu file hello.exe.

Command go install
Perintah go-install hampir sama dengan perintah go-build, namun perbedaan jika go build mengeksekusi
file yang berekstensi .go, perintah go-install merujuk kepada folder project yang bersangkutan dan
langsung melakukan instalasi program yang dibuat. Jika pada perintah go build, file executable terletak
satu file dengan file yang dieksekusi, maka perintah go-install terletak pada folder bin.

Contoh:

Page 6
PENGENALAN

Gbr. 4

BARIS KOMENTAR
Komentar pada Bahasa pemrograman bisa dimanfaatkan untuk menyisipkan catatan pada baris kode
program, mendeskripsikan atau menjelaskan suatu baris kode. Selain itu komentar juga berfungsi untuk
me remark atau menonaktifkan kode jika tidak digunakan. Ketika proses kompilasi program, komentar
akan diabaikan.

Komentar Inline
Komentar inline diawali dengan tanda double slasj (//) lalu diikuti pesan programnya. Komentar inline
hanya berlaku utuk satu baris pesan saja. Jika pesan komentar lebih dari satu baris, maka tanda // harus
ditulis lagi di baris selanjutnya.

Contoh :

package main

import (
"fmt"
)

Page 7
PENGENALAN

func main(){
// Baris kode
//Menampilkan pesan
fmt.Println("Belajar Golang di Ilkom Pancasakti")
//fmt.Println("Baris ini tidak akan dieksekusi")
}

Komentar Multiline
Komentar yang cukup panjang akan lebih rapi jika ditulis menggunakan teknik komentar multiline. Ciri
dari komentar jenis ini adalah penulisannya diawali dengan tanda /* dan diakhiri */.

Contoh:

package main

import (
"fmt"
)

func main(){
/*
Baris kode
Menampilkan pesan
Kode di dalam tanda ini tidak akan dieksekusi
*/
fmt.Println("Belajar Golang di Ilkom Pancasakti")
}

Page 8
VARIABEL DAN TIPE DATA

VARIABEL DAN TIPE DATA


VARIABEL
Variabel adalah suatu pengenal (identifier) yang digunakan untuk mewakili suatu nilai tertentu di dalam
proses program. Berbeda dengan konstanta yang nilainya selalu tetap, nilai dari suatu variable bisa diubah-
ubah sesuai kebutuhan.Hal ini di deklrasikan diluar sebuah method pada Golang

TIPE DATA
Type data diperlukan untuk mengetahui jangkauan dari tiap-tiap variable dan tersimpan dalam sebuah
variable.

Jenis Tipe Data Golang


Berikut ini jenis tipe data pada bahasa pemrograman Golang :

• Number / Angka
Tipe data number di bagi menjadi 2 yaitu :
1. Integers, Integer digunakan untuk bilangan buat,misal nya 1 dan 2. Contoh menggunakan tipe data
Integer :

2. Float, Float digunakan untuk data yang berupa data pecahan / bilangan desimal. Contohnya 1,2.
Biasanya tipe data float digunakan untuk penggunaan operator matematika, seperti perkalian,
pembagian dan lainnya.

• String / Text, Tipe data string digunakan untuk data yang berupa teks/karakter misalnya “belajar
variable pada golang”.Di dalam bahasa program Golang penulisan nilai sebuah teks harus di apit
dengan tanda petik dua (“…”) saja. Tipe data string biasanya digunakan untuk menuliskan uraian teks.
• Tipe Data Boolean, Tipe data boolean dapat digunakan untuk memberikan 2 nilai saja yaitu TRUE dan
FALSE. Perlu di ketahui penulisan TRUE maupun FALSE harus berawalan menggunakan huruf besar
agar tidak menimbulkan kesalahan.

Aturan Penulisan Tipe data Golang


• Tidak boleh memberikan nama variable dengan angka (0-9).
• Tidak boleh menambahkan prefix / awan $ dalam variable.
• Nilai dari varible harus sesuai dengan tipe data.
• Tidak boleh memberikan nama variable dengan keyword golang, misalnya if, map dan lainnya.

Praktikum :

Page 9
VARIABEL DAN TIPE DATA

Tuliskan Algoritma untuk menulis informasi biodata yaitu nama, alamat, sekolah, umur, tinggi badan dan
berat badan dengan kemudian terjemahkan ke dalam Bahasa pemrograman golang dengan nama program
biodata!

Spesifikasi

Input : nama, alamat, sekolah string dan umur, tinggiBadan(tinggi badan), beratBadan (Berat Badan)
integer.

Proses : menulis nama, alamat, sekolah, umur, tinggiBadan, beratBadan

Output : nama, alamat, sekolahm umur, tinggiBadan, beratBadan

ProgramBIODATA
{ menulis nama, alamat, sekolah, umur, tinggiBadan, beratBadan ke piranti keluaran}

Kamus
nama, alamat, sekolah : string {informasi setiap variable telah dituliskan}
umur: integer {informasi setiap variable telah dituliskan}
tinggiBadan := 169
beratBadan : = 60

Algoritma :
nama⟵”jeffry”
output (“Nama: ” + nama)
alamat⟵”makassar”
output (“Alamat: ” + alamat)
sekolah⟵”SMAN 1 Makassar”
output (“Asal sekolah: ” + sekolah )
umur⟵26
output (“Umur: ” + umur)
output (“Tinggi Badan: ”, tinggiBadan)
output (“Berat Badan: ”,beratBadan)

package main

import (
"fmt"
)
func main() {
var nama, alamat, sekolah string
var umur int

Page 10
VARIABEL DAN TIPE DATA

nama = "Jeffry"
alamat = "Makassar"
sekolah = "SMA N 1 Makassar"
umur = 26
tinggibadan := 169
beratbadan := 60
fmt.Println("=== Biodata ===")
fmt.Println("Nama : " + nama)
fmt.Println("Alamat : " + alamat)
fmt.Println("Sekolah : " + sekolah)
fmt.Println("Umur : ", umur)
fmt.Println("Tinggi Badan", tinggibadan)
fmt.Println("Berat Badan", beratbadan)
}

Gbr. 5
Analisis:
Perhatikan kode diatas, ada beberapa varian cara mendeklarasikan variable baik dengan tipe data maupun
tidak. Pada kode di atas hanya menggunakan 2 tipe data yaitu string dan integer. Variable nama, alamat,
sekolah, dan umur disebut dengan manifest typing yaitu deklarasi variable yang tipe datanya ditentukan.
Sedangkan variable tinggiBadan dan beratBadan merupakan metode type inference, yaitu metode
deklarasi variabel yang tipe data-nya ditentukan oleh tipe data nilainya, cara kontradiktif jika dibandingkan
dengan cara pertama. Dengan metode jenis ini, keyword var dan tipe data tidak perlu ditulis.Pada
penggunaan metode ini, operand = harus diganti dengan := dan keyword var dihilangkan.Diperbolehkan
untuk tetap menggunakan keyword var pada saat deklarasi meskipun tanpa menuliskan tipe data, dengan
ketentuan tidak menggunakan tanda :=, melainkan tetap menggunakan =.

Page 11
KONSEP INPUT/OUTPUT

KONSEP INPUT/OUTPUT
OPERATOR
Operator adalah symbol yang biasa dilibatkan dalam program untuk melakukan sesuatu operasi atau
manipulasi.

Operator Aritmatika
Operator aritmatika adalah operator yang digunakan untuk operasi yang sifatnya perhitungan. Go
mendukung beberapa operator aritmatika standar, list-nya bisa dilihat di tabel berikut.

Operator Deskripsi Contoh


+ Penjumlahan(add) a+b
- Pengurangan(Substract) a-b
* Perkalian(Multiply) a*b
/ Pembagian (Divide) m/n
% modulus / sisa hasil pembagian m%n
Contoh penggunaan:

package main

import (
"fmt"
)
func main() {
var value = (((2 + 6) % 3) * 4 - 2) / 3
fmt.Println("Nilai", value)
}

Operator Perbandingan
Operator perbandingan digunakan untuk menentukan kebenaran suatu kondisi. Hasilnya berupa nilai
boolean, true atau false.

Tabel di bawah ini berisikan operator perbandingan yang bisa digunakan di Go.

Operator Deskripsi Contoh


== apakah nilai kiri sama dengan nilai kanan X==Y
!= apakah nilai kiri tidak sama dengan nilai kanan X!=y
> apakah nilai kiri lebih besar dari nilai kanan X>Y
< apakah nilai kiri lebih kecil daripada nilai kanan X<Y
>= apakah nilai kiri lebih besar atau sama dengan nilai kanan X>=Y

Page 12
KONSEP INPUT/OUTPUT

<= apakah nilai kiri lebih kecil atau sama dengan nilai kanan X<=Y

Contoh penggunaan:

package main

import (
"fmt"
)
func main() {
var value = (((2 + 6) % 3) * 4 - 2) / 3
var isEqual = (value == 2)

fmt.Printf("nilai %d (%t) \n", value, isEqual)


}

Pada kode di atas, terdapat statement operasi aritmatika yang hasilnya ditampung oleh variabel value.
Selanjutnya, variabel tersebut tersebut dibandingkan dengan angka 2 untuk dicek apakah nilainya sama.
Jika iya, maka hasilnya adalah true, jika tidak maka false. Nilai hasil operasi perbandingan tersebut
kemudian disimpan dalam variabel isEqual

Operator Logika
Operator ini digunakan untuk mencari benar tidaknya kombinasi data bertipe bool (bisa berupa variabel
bertipe bool, atau hasil dari operator perbandingan).

Beberapa operator logika standar yang bisa digunakan:

Operator Deskripsi Contoh


&& kiri dan kanan X&&Y
|| kiri atau kanan X||y
! negasi / nilai kebalikan !Y
Contoh penggunaan:

package main

import (
"fmt"
)

func main() {

Page 13
KONSEP INPUT/OUTPUT

var left = false


var right = true

var leftAndRight = left && right


fmt.Printf("left && right \t(%t) \n", leftAndRight)

var leftOrRight = left || right


fmt.Printf("left || right \t(%t) \n", leftOrRight)

var leftReverse = !left


fmt.Printf("!left \t\t(%t) \n", leftReverse)
}

MENGAMBIL INPUT DAN MENAMPILKAN OUTPUT


Sebuah kode program dalam menangani kebutuhan tertentu ada kalanya terdapat 3 proses yang berurutan
yaitu Input, Proses dan Output.

• Input adalah sebuah nilai yang nantinya kita masukkan.


• Proses adalah Memproses hasil yang di masukkan.
• Output adalah sebuah nilai hasil dari proses.

Pada kesempatan ini kita akan belajar cara mengambil nilai input dan menampilkan output program
golang.

Cara Mengambil Nilai Input


Pada Golang terdapat 2 jenis I/O dasar, yaitu:

a. Statemen Input adalah Statemen / fungsi yang digunakan untuk membaca data dari inputing device
(keyboard/mouse), contoh : Scan
b. Statemen Output adalah Statemen yang digunakan untuk menuliskan data ke layer monitor, contoh :
Print

Contoh:

package main

import (
"fmt"
)

func main() {

Page 14
KONSEP INPUT/OUTPUT

var nama string


var nim int
var a, b, c,d, m float64
fmt.Print("Masukkan NIM Anda : ")
fmt.Scanln(&nim)
fmt.Print("Masukkan Nama Anda: ")
fmt.Scanln(&nama)
fmt.Print("Masukkan Nilai a: ")
fmt.Scanln(&a)
fmt.Print("Masukkan Nilai b: ")
fmt.Scanln(&b)
fmt.Print("Masukkan Nilai c: ")
fmt.Scanln(&c)
fmt.Print("Masukkan Nilai d: ")
fmt.Scanln(&d)

m = ((-b)+(2*c*c)+(4*a*b))/2*c;

fmt.Print(m)
}

Analisis:

Pada program di atas operasi yang dilakukan adalah operasi perhitungan matematis, maka harus
menggunakan type data yang sesuai untuk angka. Sebagian besar hasil dari pembagian adalah bilangan
pecahan. Oleh sebab itu, kita tidak bisa menggunakan type data integer. Jadi, pada program kali ini, kita
menggunakan type data float. Pada saat pengeksekusian, program akan meminta masukan berupa nilai
untuk variabel-variabelyang ada. Statement Print merupakan statement output karena menampilkan
hasilyang kita buat dalam program. Sedangkan statement Scan merupakan statement inputkarena
merupakan statement untuk memasukkan nilai variabel yang kita inginkan.Kemudian, program akan
memasukkan nilai-nilai tersebut ke dalam rumus yang ada.Lalu, program akan menapilkan hasil berupa
nilai m yang ingin kita ketahui.

//Program Menghitung Luas Lingkaran


package main
import (
"fmt"
)

Page 15
KONSEP INPUT/OUTPUT

func main() {
const phi=3.14
var luas, r float64

fmt.Print("Masukkan jari-jari Lingkaran ")


fmt.Scanln(&r)
luas = phi*r*r;
fmt.Print("Luas Lingkaran adalah ",luas)
}
Analisis:

Pada program menghitung luas lingkaran ini, terdapat suatu variabel konstanta yang nilainya
tetap.Variabel yang termasuk variabel konstanta yaitu phi. Seperti yang kita ketahui,phi bernilai 3,14. Oleh
karena itu, akan lebih baik jika nilai phi itu dijadikan sebagaisuatu konstanta daripada dijadikan sebagai
masukan dari pengguna program.Setelah itu, programakan meminta masukan berupa jari-jari lingkaran
yang akan dicari luasnya. Kemudian,akan dilakukan perhitungan dengan rumus yang ada. Lalu hasilnya
akan ditampilkansesuai dengan hasil perhitungan.

Page 16
KUIS

KUIS
Soal:

1. Buat sebuah program untuk menampilkan data mahasiswa berupa nama, nim, umur, nilai (dalam
decimal). Yang mana data tersebut berupa inputan dari user !

Page 17
SELEKSI KONDISI

SELEKSI KONDISI
Seleksi kondisi digunakan untuk mengontrol alur program. Analoginya mirip seperti fungsi rambu lalu
lintas di jalan raya. Kapan kendaraan diperbolehkan melaju dan kapan harus berhenti diatur oleh rambu
tersebut. Seleksi kondisi pada program juga kurang lebih sama, kapan sebuah blok kode akan dieksekusi
dikontrol.Yang dijadikan acuan oleh seleksi kondisi adalah nilai bertipe bool, bisa berasal dari variabel,
ataupun hasil operasi perbandingan. Nilai tersebut menentukan blok kode mana yang akan dieksekusi.

Go memiliki 2 macam keyword untuk seleksi kondisi, yaitu if else dan switch. Di bab ini kita akan
mempelajarinya satu-persatu.

PERNYATAAN IF – ELSE
Jenis-jenis pemilihan kondisi:

• Pilihan Tunggal
• Pilihan Ganda
• Pilihan Majemuk

Pilihan Tunggal
Bentuk paling sederhana pilihan tunggal adalah jika hanya ada satu pilihan kondisi yang disediakan.

If kondisi
{
true statement;
}

Bentuk Umum:

Contoh Permasalahan: Menentukan huruf vokal dari suatu huruf yang dimasukkan dari keyboard.

//Program Menentukan Huruf vokal


package main
import (
"fmt"
)

func main() {
var huruf string

fmt.Println("Program Menentukan Huruf Vokal ")

Page 18
SELEKSI KONDISI

fmt.Println("------------------------------")
fmt.Print("Masukkan huruf : ")
fmt.Scan(&huruf)

if (huruf=="a" || huruf=="i" || huruf=="u" || huruf=="e" || huruf=="o"){


fmt.Print("Huruf "+huruf+" adalah huruf vokal")
}
}

Pilihan Ganda
Digunakan untuk menentukan tindakan yang akan digunakan bila kondisi bernilai benar dan salah. Bentuk
umum:

if kondisi
{
true statement
}
else
{
false statement
}

Contoh 1

//Program Menentukan Huruf vokal dan konsonan


package main
import (
"fmt"
)

func main() {
var huruf string

Page 19
SELEKSI KONDISI

fmt.Println("Program Menentukan Huruf Vokal ")


fmt.Println("------------------------------")
fmt.Print("Masukkan huruf : ")
fmt.Scan(&huruf)

if (huruf=="a" || huruf=="i" || huruf=="u" || huruf=="e" || huruf=="o")


{
fmt.Print("Huruf "+huruf+" adalah huruf vokal")
}else{
fmt.Print("Huruf "+huruf+" adalah huruf konsonan")
}
}

Contoh 2

//Program Menentukan bilangan terbesar dari dua bilangan


package main
import (
"fmt"
)

func main() {
var a,b int

fmt.Println("Program bilangan terbesar dari dua bilangan ")


fmt.Println("------------------------------")
fmt.Print("Masukkan angka 1: ")
fmt.Scanln(&a)
fmt.Print("Masukkan angka 2: ")
fmt.Scanln(&b)

if (a>b) {
fmt.Print("bilangan terbesar adalah ", a)

Page 20
SELEKSI KONDISI

}else{
fmt.Print("bilangan terbesar adalah ", b)
}
}

Contoh Permasalahan:

Mengelompokan nilai dengan ketentuan :

Jika nilai angka >= 90, maka nilai huruf = A

Jika nilai angka >= 80, maka nilai huruf = B

Jika nilai angka >= 70, maka nilai huruf = C

Jika nilai angka >= 60, maka nilai huruf = D

Jika nilai angka < 60, maka nilai huruf = E

//Program Menentukan bilangan terbesar dari dua bilangan


package main
import (
"fmt"
)

func main() {
var nilai int

fmt.Println("Program Pengelompokkan Nilai ")


fmt.Println("------------------------------")
fmt.Print("Masukkan Nilai: ")
fmt.Scanln(&nilai)

if (nilai>90) {

Page 21
SELEKSI KONDISI

fmt.Print("nilai A")
}else if (nilai>=80){
fmt.Print("nilai B")
}else if (nilai>=70){
fmt.Print("nilai C")
}else if (nilai>60){
fmt.Print("nilai D")
}else{
fmt.Print("nilai E")
}
}

Pilihan Majemuk
Untuk menentukan tindakan yang akan digunakan disediakan lebih dari 2 alternatif. Merupakan bentuk
statement if dengan statement if lain di dalam if sebelumnya.

Bentuk umum:

if kondisiA
{
if kondisiB
{
true statementB
}
else
{
false statementB
}
}
else
{
false statementA
}

Page 22
SELEKSI KONDISI

package main
import "fmt"

func main() {
var v1 int = 400
var v2 int = 700

// Menggunakan Statement if
if( v1 == 400 ) {
// jika kondisi benar maka
// akan memeriksa kondisi kedua
if( v2 == 700 ) {
// jika kondisi benar
// maka akan menampilkan:
fmt.Printf("Nilai v1 400 and v2 700" );
}
}
}

PERNYATAAN SWITCH - CASE

Untuk masalah dengan dua pilihan atau lebih, struktur CASE dapat menyederhanakan penulisan IF yang
bertingkat-tingkat. Switch merupakan seleksi kondisi yang sifatnya fokus pada satu variabel, lalu kemudian
di-cek nilainya. Contoh sederhananya seperti penentuan apakah nilai variabel x adalah: 1, 2, 3, atau lainnya.

Pernyataan Switch mengambil ekspresi dan mencocokkannya dengan daftar kemungkinan kasus. Setelah
kecocokan ditemukan, ia mengeksekusi blok kode yang ditentukan dalam case yang cocok.

Bentuk umum :

switch expression {
case condition:
}

Page 23
SELEKSI KONDISI

package main
import "fmt"

func main() {
var dayOfWeek = 6
switch dayOfWeek {
case 1: fmt.Println("Senin")
case 2: fmt.Println("Selasa")
case 3: fmt.Println("Rabu")
case 4: fmt.Println("Kamis")
case 5: fmt.Println("Jumat")
case 6: {
fmt.Println("Sabtu")
fmt.Println("Weekend. Yaay!")
}
case 7: {
fmt.Println("Minggu")
fmt.Println("Weekend. Yaay!")
}
default: fmt.Println("Salah Hari")
}
}

Mengkombinasaikan pernyataan Switch – Case

package main
import "fmt"

func main() {
switch dayOfWeek := 5; dayOfWeek {

Page 24
SELEKSI KONDISI

case 1, 2, 3, 4, 5:
fmt.Println("Hari Kerja")
case 6, 7:
fmt.Println("Weekend")
default:
fmt.Println("Salah Hari")
}
}

Seleksi Kondisi Bersarang


package main
import "fmt"

func main() {
var point = 6

if point > 7 {
switch point {
case 10:
fmt.Println("perfect!")
default:
fmt.Println("nice!")
}
} else {
if point == 5 {
fmt.Println("not bad")
} else if point == 3 {
fmt.Println("keep trying")
} else {
fmt.Println("you can do it")
if point == 0 {
fmt.Println("try harder!")
}
}
}
}

Page 25
KUIS

KUIS
Misalkan karyawan PT. Makmur dikelompokkan berdasarkan golongannya. Upah perjam
tiap karyawan bergantung pada golongannya, dengan ketentuan :

GOLONGAN UPAH PERJAM


A 5000
B 7000
C 8000
D 10000

Jumlah jam kerja normal selama 1 minggu adalah 48 jam. Kelebihan jam kerja dianggap
lembur dengan upah lembur adalah Rp.4000,- per jam untuk semua golongan karyawan.
Buat program menghitung gaji karyawan mingguan. Data yang dimasukan dari keyboard
adalah nama karyawan, golongan, jumlah jam kerja. Data yang dicetak adalah nama
karyawan dan gajinya.

Program dibuat dengan menggunakan struktur IF dan CASE.

Page 26
PERULANGAN (LOOPING)

PERULANGAN (LOOPING)
Perulangan adalah suatu program yang di desain untuk melakukan tugas yang berulang dengan jumlah
yang telah di tentukan. Perulangan akan berhenti ketika suatu kondisi sudah terpenuhi.

Di Go keyword perulangan hanya for saja, tetapi meski demikian, kemampuannya merupakan gabungan for,
foreach, dan while ibarat bahasa pemrograman lain.

Hal ini untuk memudahkan kita agar tidak terlalu banyak hal yang harus kita pelajari untuk perulangan
seperti halnya di bahasa lainnya.

PERULANGAN MENGGUNAKAN FOR


Sintaks untuk perulangan For di Go adalah sebagai
berikut :
For[inisialisasi];[kondisi];[post execution] {

}

• inisialisasi : kita dapat menginisialisasi variable pada section ini. Sintak sama dengan inisialisasi pada
if. Kode yang berada pada section inisialisasi hanya akan dipanggil 1 kali saja.
• kondisi : jika kondisi true maka kode di dalam kurung kurawal for akan dieksekusi. Jika kondisi false
maka perulangan telah berakhir. Kondisi dipanggil setelah inisialisasi dan setelah post execution.
• post execution : kode dalam section ini akan dipanggil setiap selesai dari 1 perulangan. Setelah post
execution di eksekusi lalu selanjutnya for akan mengecheck kondisi, jika true maka perulangan akan
di panggil dan sebaliknya.

Contoh :

for i := 0; i <5; i++ {


fmt.Println("Angka", i)
}

Page 27
PERULANGAN (LOOPING)

Perulangan di atas hanya akan berjalan ketika variabel i bernilai dibawah 5, dengan ketentuan setiap kali
perulangan, nilai variabel i akan di-iterasi atau ditambahkan 1 (i++ artinya ditambah satu, sama seperti i =
i + 1). Karena i pada awalnya bernilai 0, maka perulangan akan berlangsung 5 kali, yaitu ketika i bernilai 0,
1, 2, 3, dan 4.

PERULANGAN FOR DENGAN ARGUMEN HANYA KONDISI


Cara ke-2 adalah dengan menuliskan kondisi setelah keyword for (hanya kondisi). Deklarasi dan iterasi
variabel counter tidak dituliskan setelah keyword, hanya kondisi perulangan saja. Konsepnya mirip seperti
while milik bahasa pemrograman lain.

Kode berikut adalah contoh for dengan argumen hanya kondisi (seperti if), output yang dihasilkan sama
seperti penerapan for cara pertama.

var i = 0

for i <5 {
fmt.Println("Angka", i)
i++
}

PENGGUNAAN KEYWORD FORTANPA ARGUMEN


var i = 0

for {
fmt.Println("Angka", i)

i++
if i == 5 {
break
}
}
Cara ke-3 adalah for ditulis tanpa kondisi. Dengan ini akan dihasilkan perulangan tanpa henti (sama
dengan for true). Pemberhentian perulangan dilakukan dengan menggunakan keyword break.

Page 28
PERULANGAN (LOOPING)

Sepertihalnya pada bahasa pemrograman lainnya, perulangan di Golang juga memiliki kata kunci break dan
continue :

• break : digunakan untuk mengakhiri perulangan.


• continue : digunakan untuk melanjutkan perulangan dan langsung memanggil post execution.

Berikut adalah contoh dari break dan continue :

for i := 0; i < 10; i++ {


if i % 2 == 0 {
continue
}
fmt.Printf("%d", i);
}
//keluaran dari kode diatas adalah : 13579

for i := 0; i < 10; i++ {


if i % 2 == 0 {
continue
}
fmt.Printf("%d", i);
if i > 3 {
break
}
}
//keluaran dari kode diatas adalah : 135

PERULANGAN FOR – RANGE


range adalah perulangan dengan menggunakan kombinasi keyword for dan range. Cara ini biasa digunakan
untuk me-looping data bertipe array. Detailnya akan dibahas dalam bab selanjutnya.

package main
import (
"fmt"
)
func main() {

data := []string{"Panca", "Sakti"}

for index, v := range data {


fmt.Println("Perulangan ke", index, v)
}
}

Page 29
PERULANGAN (LOOPING)

PERULANGAN FOR BERSARANG


Tak hanya seleksi kondisi yang bisa bersarang, perulangan juga bisa. Cara pengaplikasiannya kurang lebih
sama, tinggal tulis blok statement perulangan didalam perulangan.

for i := 0; i <5; i++ {


for j := i; j <5; j++ {
fmt.Print(j, " ")
}

fmt.Println()
}

Pada kode di atas, untuk pertama kalinya fungsi fmt.Println() dipanggil tanpa disisipkan
parameter. Cara seperti ini bisa digunakan untuk menampilkan baris baru. Kegunaannya sama
seperti output dari statement fmt.Print("\n").

Hasil

Page 30
UTS

UTS

Page 31
FUNGSI

FUNGSI
Function adalah sekelompok pernyataan yang bersama-sama melakukan tugas. Setiap program Go
memiliki setidaknya satu fungsi, yaitu main (). Anda dapat membagi kode Anda menjadi fungsi-fungsi
terpisah. Bagaimana Anda membagi kode Anda di antara fungsi-fungsi yang berbeda tergantung pada
Anda, tetapi secara logis, pembagiannya harus sedemikian rupa sehingga masing-masing fungsi melakukan
tugas tertentu.

Deklarasi fungsi memberi tahu compiler tentang nama function, tipe return, dan parameter. Definisi fungsi
menyediakan fungsi body yang sebenarnya.

Library Go standar menyediakan berbagai fungsi bawaan yang dapat dipanggil oleh program Anda.
Misalnya, fungsi len () mengambil argumen dari berbagai jenis dan return panjang Type. Jika sebuah string
diteruskan ke sana, fungsi mengembalikan panjang string dalam byte. Jika array dilewatkan ke sana, fungsi
mengembalikan panjang array.

Fungsi juga dikenal sebagai method, sub-routine, atau procedure.

Fungsi merupakan aspek penting dalam pemrograman. Definisi fungsi sendiri adalah sekumpulan blok
kode yang dibungkus dengan nama tertentu. Penerapan fungsi yang tepat akan menjadikan kode lebih
modular dan juga dry (kependekan dari don't repeat yourself), tak perlu menuliskan banyak kode yang
kegunaannya berkali-kali, cukup sekali saja lalu panggil sesuai kebutuhan.

Mendefinisikan suatu Fungsi

Berikut ini format penulisan fungsi di golang :

func namaFungsi(){}

Atau

func namaFungsi(parameter tipedata){}

Atau

func namaFungsi(parameter tipedata) TipeDataNilaiBalik{}

PENERAPAN FUNGSI
Sebenarnya tanpa sadar, kita sudah menerapkan fungsi di bab-bab sebelum ini, yaitu pada fungsi main.
Fungsi main merupakan fungsi yang paling utama pada program Go.

Cara membuat fungsi cukup mudah, yaitu dengan menuliskan keyword func, diikuti setelahnya nama
fungsi, kurung yang berisikan parameter, dan kurung kurawal untuk membungkus blok kode.

Page 32
FUNGSI

Parameter sendiri adalah variabel yang disisipkan pada saat pemanggilan fungsi.

Silakan lihat dan praktekan kode tentang implementasi fungsi berikut.

package main

import (

"fmt"

func cetak() {

fmt.Println("Belajar Fungsi di Golang")

func main() {

cetak()

Perhatikan kode diatas, fungsi main() memanggil fungsi cetak(). Maka akan memproses baris kode di
dalam fungsi cetak.

MEMBUAT FUNGSI DENGAN PARAMETER


Selanjutnya kita akan belajar membuat contoh sederhana fungsi di golang menggunakan parameter.
Parameter yang di masukkan ke dalam sebauh tanda kurang harus menggunakan tipe data Golang. Dan
nilai kembali harus mendeklarasikan tipe datanya.

Berikut ini contoh penggunaan fungsi di golang.

package main

Page 33
FUNGSI

import (

"fmt"

func tambah(a int, b int) int {

c := a + b

return c

func main() {

a := 10

b := 20

hasil := tambah(a, b)

fmt.Println("Hasil Penjumlahan Antara", a, "+", b, "Adalah", hasil)

Kode di atas fungsi yang di buat bernama jumlah() dengan parameter a dengan tipe data integer dan b
dengan tipe data integer.

Perlu di ketahui penggunaan fungsi di atas menggunakan return / nilai balik. Nilai balik / return fungsi
jumlah yaitu integer.

Page 34
FUNGSI

MEMBUAT FUNGSI TANPA NILAI BALIK


Jika sebelumnya kita membuat fungsi dengan nilai balik. Kali ini akan membuat fungsi di mana fungsi yang
di panggil akan melakukan aksi. Contoh aksi nya yaitu dengan mencetak suatu hasil yang di inginkan.

Berikut ini contoh menggunakan fungsi tanpa nilai balik di golang :

package main

import (

"fmt"

func tambah(a int, b int) {

c := a + b

fmt.Println("Hasil Penjumlahan Antara", a, "+", b, "Adalah", c)

func main() {

a := 10

b := 20

tambah(a, b)

Hasilnya sama seperti fungsi menggunakan return, namun untuk mencetak hasil penjumlahan dilakukan
pada fungsi jumlah().

package main

import (

"fmt"

Page 35
FUNGSI

func tambah(a int, b int) int {

c := a + b

return c

func kali(a int, b int) int {

c := a * b

return c

func bagi(a int, b int) int {

c := a + b

return c

func kurang(a int, b int) int {

c := a + b

return c

func main() {

a := 10

b := 20

fmt.Println("Hasil Penjumlahan Antara", a, "+", b, "Adalah", tambah(a, b))

fmt.Println("Hasil Perkalian Antara", a, "*", b, "Adalah", kali(a, b))

fmt.Println("Hasil Pembagian Antara", a, "/", b, "Adalah", bagi(a, b))

fmt.Println("Hasil Penguarangan Antara", a, "-", b, "Adalah", kurang(a, b))

Page 36
FUNGSI

Terdapat 4 fungsi yang kita panggil, masing-masing fungsi mempunya cara kerja yang berbeda. Proses di
dalam ke empat fungsi tersebut yaitu operator aritmatik.

Page 37
LARIK (ARRAY)

LARIK (ARRAY)
Array adalah kumpulan data bertipe sama, yang disimpan dalam sebuah variabel. Array memiliki kapasitas
yang nilainya ditentukan pada saat pembuatan, menjadikan elemen/data yang disimpan di array tersebut
jumlahnya tidak boleh melebihi yang sudah dialokasikan. Default nilai tiap elemen array pada awalnya
tergantung dari tipe datanya. Jika int maka tiap element zero value-nya adalah 0, jika bool maka false, dan
seterusnya. Setiap elemen array memiliki indeks berupa angka yang merepresentasikan posisi urutan
elemen tersebut. Indeks array dimulai dari 0. Contohnya adalah array yang didalamnya terdapat angka
dengan tipe integer. A = [1,2,3,4,5,6,7,8,9,10].

Hampir di semua bahasa pemrograman array di tandai dengan lambang siku […].

Contoh penerapan array:

var names [4]string


names[0] = "nilai indeks 0"
names[1] = "nilai indeks 1"
names[2] = "nilai indeks 2"
names[3] = "nilai indeks 3"

fmt.Println(names[0], names[1], names[2], names[3])

Variabel names dideklarasikan sebagai array string dengan alokasi elemen 4 slot. Cara mengisi slot elemen
array bisa dilihat di kode di atas, yaitu dengan langsung mengakses elemen menggunakan indeks, lalu
mengisinya.

Berikut ini contoh kode lengkap cara membuat array di golang.

package main

import (
"fmt"
)

func main() {
var names [4]string
names[0] = "nilai indeks 0"
names[1] = "nilai indeks 1"
names[2] = "nilai indeks 2"
names[3] = "nilai indeks 3"

Page 38
LARIK (ARRAY)

Ada 2 cara menampilkan array. Yang pertama dapat mencetak pada index array tertantu dan yang kedua
dapat menggunakan perulangan.

package main

import (
"fmt"
)

func main() {
var names [4]string
names[0] = "nilai indeks 0"
names[1] = "nilai indeks 1"
names[2] = "nilai indeks 2"
names[3] = "nilai indeks 3"

fmt.Println(names[0], names[1], names[2], names[3])


}

Cara di atas sudah berhasil menampilkan data yang kita definisikan di awal.

Pertanyaannya adalah Ketika datanya banyak akan menuliskan data satu per satu ?

Jawabnya tidak mungkin, maka dari itu seperti yang saya sebutkan di atas solusinya menggunakan sebuah
perulangan.

Berikut contoh menampilkan data array dengan perulangan:

package main

import (
"fmt"
)

func main() {
var names [4]string
names[0] = "nilai indeks 0"
names[1] = "nilai indeks 1"
names[2] = "nilai indeks 2"
names[3] = "nilai indeks 3"

for i, v := range names {


fmt.Println("Index ke ", i, "=>", v)
}
}

Dengan menggunakan perulangan maka kode yang kita tuliskan lebih sedikit dan efektif.

Page 39
LARIK (ARRAY)

ARRAY MULTIDIMENSI
Array multidimensi adalah array yang tiap elemennya juga berupa array (dan bisa seterusnya, tergantung
kedalaman dimensinya).

Cara deklarasi array multidimensi secara umum sama dengan cara deklarasi array biasa, dengan cara
menuliskan data array dimensi selanjutnya sebagai elemen array dimensi sebelumnya.

Khusus untuk array yang merupakan sub dimensi atau elemen, boleh tidak dituliskan jumlah datanya.

Format penulisan multi dimensi yaitu:

var variable_name [ukuran1][ukuran2]...[ukuranN] type_variable

ukuran1 menujukkan total array, sedangkan ukuran2 menunjukan jumlah data di dalam
array ukuran1. Contoh:

package main

import (
"fmt"
)

func main() {
fmt.Println("Array Multi Dimensi")
var angka = [5][2]int{{0, 0}, {2, 2}, {3, 4}, {5, 6}, {7, 8}}

for i := 0; i < 5; i++ {


for j := 0; j < 2; j++ {
fmt.Printf("Data ke [%d][%d] = %d\n", i, j, angka[i][j])
}
}
}
Perhatikan kode di atas, dimensi pertama kita atur dengan angka 5, artinya terdapat
jumlah element array sejumlah 5 dan jumlah nilai di dalam element array pertama
yaitu 2.

Page 40
PENGENALAN POINTER

PENGENALAN POINTER
Pointer adalah reference atau alamat memori. Variabel pointer berarti variabel yang berisi alamat memori
suatu nilai. Sebagai contoh sebuah variabel bertipe integer memiliki nilai 4, maka yang dimaksud pointer
adalah alamat memori dimana nilai 4 disimpan, bukan nilai 4 itu sendiri.

Variabel-variabel yang memiliki reference atau alamat pointer yang sama, saling berhubungan satu sama
lain dan nilainya pasti sama. Ketika ada perubahan nilai, maka akan memberikan efek kepada variabel lain
(yang referensi-nya sama) yaitu nilainya ikut berubah.

PENERAPAN POINTER
Variabel bertipe pointer ditandai dengan adanya tanda asterisk (*) tepat sebelum penulisan tipe data
ketika deklarasi.

var number *int


var name *string

Nilai default variabel pointer adalah nil (kosong). Variabel pointer tidak bisa menampung nilai yang bukan
pointer, dan sebaliknya variabel biasa tidak bisa menampung nilai pointer.

Ada dua hal penting yang perlu diketahui mengenai pointer:

Variabel biasa bisa diambil nilai pointernya, caranya dengan menambahkan tanda ampersand (&) tepat
sebelum nama variabel. Metode ini disebut dengan referencing.

Dan sebaliknya, nilai asli variabel pointer juga bisa diambil, dengan cara menambahkan tanda asterisk (*)
tepat sebelum nama variabel. Metode ini disebut dengan dereferencing.

var numberA int = 4


var numberB *int = &numberA

fmt.Println("numberA (value) :", numberA) // 4


fmt.Println("numberA (address) :", &numberA) // 0xc20800a220

fmt.Println("numberB (value) :", *numberB) // 4


fmt.Println("numberB (address) :", numberB) // 0xc20800a220

Page 41
PENGENALAN POINTER

Variabel numberB dideklarasikan bertipe pointer int dengan nilai awal adalah referensi variabel numberA
(bisa dilihat pada kode &numberA). Dengan ini, variabel numberA dan numberB menampung data dengan
referensi alamat memori yang sama.

Variabel pointer jika di-print akan menghasilkan string alamat memori (dalam notasi heksadesimal),
contohnya seperti numberB yang diprint menghasilkan 0xc20800a220.

Nilai asli sebuah variabel pointer bisa didapatkan dengan cara di-dereference terlebih dahulu (bisa dilihat
pada kode *numberB).

PARAMETER POINTER
Parameter bisa juga didesain sebagai pointer. Cara penerapannya kurang lebih sama, dengan cara
mendeklarasikan parameter sebagai pointer.

package main

import "fmt"

func main() {
var number = 4
fmt.Println("before :", number) // 4

change(&number, 10)
fmt.Println("after :", number) // 10
}

func change(original *int, value int) {


*original = value
}

Fungsi change() memiliki 2 parameter, yaitu original yang tipenya adalah pointer int, dan value yang
bertipe int. Di dalam fungsi tersebut nilai asli parameter pointer original diubah.

Fungsi change() kemudian diimplementasikan di main. Variabel number yang nilai awalnya adalah 4
diambil referensi-nya lalu digunakan sebagai parameter pada pemanggilan fungsi change().

Nilai variabel number berubah menjadi 10 karena perubahan yang terjadi di dalam fungsi change adalah
pada variabel pointer.

Page 42
DAFTAR PUSTAKA

DAFTAR PUSTAKA

Page 43

Anda mungkin juga menyukai