Anda di halaman 1dari 61

Pemrograman Dasar

Pemrograman
Komputer
Tim Pengelola MK Pemrograman Dasar
KJFD Dasar dan Penunjang
Fakultas Ilmu Komputer
Universitas Brawijaya

1
Komputer

2
Apa itu Komputer?

 Komputer -> Compute = Menghitung


• Semua proses di dalam komputer adalah perhitungan

 Terdiri dari 2 komponen utama:


• Hardware (Perangkat Keras)
• Software (Perangkat Lunak)

 Komponen tambahan (yang penting)


• Brainware (Pengguna)

3
Perangkat Keras (Hardware)

 Perangkat Fisik (Berupa rangkaian digital)

 Terdiri atas 4 komponen utama:


• CPU (Central Processing Unit)
• Memory
• Input/Output
• Interkoneksi

4
Central Processing Unit (CPU)

 Bagian utama komputer -> Otak Komputer


 Biasa disebut Mikroprosesor
(Salah kaprah di Indonesia: CPU -> Casing)

 Mikroprosesor bermacam-macam
• Intel -> yang paling banyak digunakan di Indonesia
• AMD
• ARM -> banyak digunakan pada smartphone

 Mikroprosesor saat ini -> clock: GHz, size: nano


5
Memory

 Penyimpan (instruksi dan data)

 Macam-macam memory
• Sifat: Volatile (ROM, Flash), Non-Volatile (RAM)
• Kecepatan: Register, Cache -> GHz
• Ukuran: Hardisk, Tapedisk -> Terabyte

6
Perangkat Input/Output

 Sensor dan Aktuator

 Perangkat interaksi antara:


• Mesin – Mesin
• Mesin – Manusia

 Input -> Masukan ke komputer


 Output -> Diterima manusia

7
Interkoneksi

 Penghubung ketiga komponen


• CPU
• Memory
• Perangkat Input/Output

8
Software (Perangkat Lunak)

 Kumpulan Instruksi dan Data yang mengontrol


proses di komputer

 Program
• Kumpulan instruksi atau perintah yang disusun
sedemikian rupa (berurutan) sehingga komputer dapat
melakukan aktivitas seperti yang diinginkan pengguna

 Basis Data
• Kumpulan data yang memiliki bentuk tertentu sehingga
dapat diproses sesuai keinginan pengguna
9
Fungsi Software

1. Mengatur penggunaan resource (perangkat) yang


terdapat pada komputer
2. Menyediakan bantuan atau antarmuka agar
pengguna dapat memanfaatkan resource pada
komputer
3. Sebagai perantara yang menjembatani informasi
antara komputer dan pengguna

10
Macam-macam Software (1)

 Sistem Operasi
• Software sebagai pengendali utama pada komputer
• Mengatur resource yang terdapat pada komputer
• Contoh: Microsoft Window, Ubuntu Linux, MacOS,
OpenSolaris, Unix, IBM AIX, dll

 Aplikasi
• Software yang membantu pengguna di dalam melakukan
aktivitas atau pekerjaan sehari-hari
• Contoh: Microsoft office

11
Macam Software (2)

 Utility
• Software penunjang yang banyak digunakan untuk
memperlancar aktivitas komputer
• Contoh: Anti virus, Anti malware, software kompresi

 Software Pengembang
• Software untuk membuat “software”

12
Software Pengembang

 Software untuk membuat “software”


 Menggunakan “bahasa pemrograman”
• Bahasa Mesin
• Bahasa Assembly (Low Level Language)
• Bahasa Tingkat Tinggi (High Level Language)

 Ada 2 macam:
• Kompiler
• Interpreter

13
Konsep Bahasa
Pemrograman
Bahasa Pemrograman

 Bahasa komunikasi manusia dengan komputer untuk


memberikan instruksi kepada komputer
 Low Level Programming Language
• Bahasa Mesin
• Bahasa Assembly
 High Level Programming Language
Low Level Programming Language

Bahasa Mesin Assembly

• 8B542408 83FA0077 fib:


06B80000 0000C383 mov edx, [esp+8]
FA027706 B8010000 cmp edx, 0
ja @f mov eax, 0
00C353BB 01000000 ret @@:
B9010000 008D0419 cmp edx, 2
83FA0376 078BD98B ja @f mov eax, 1
C84AEBF1 5BC3 ret @@:
push ebx
mov ebx, 1
mov ecx, 1
High Level Programming Language

 Mendekati bahasa manusia (natural language)


 Menggunakan istilah-istilah dalam bahasa Inggris
dan notasi matematis umum
 Third-generation programming language (Fortran, 
ALGOL, and COBOL)
 Pemrograman Terstruktur.
 General-purpose languages  C,  C++, C#, 
Java, BASIC and Pascal
High Level Programming Language

 Satu pernyataan menyelesaikan tugas-tugas


substantial
 Program compiler  mengkonversi ke bahasa
mesin (seluruh kode program)
 Program interpreter  mengeksekusi perintah satu
persatu dalam bahasa tingkat tinggi secara
langsung
High Level Programming Language

 Ada 2 metode pemrograman


• Pemrograman Struktural
• Pemrograman ber-orientasi obyek

19
Paradigma Pemrograman

 Pemrograman Terstruktur/Sekuensial
 Pemrograman Berorientasi Objek (OOP)
 Pemrograman Berbasis Kejadian (Event Based
Programming)
 Pemrograman Visual/Window/GUI
 Pemrograman Wearables
Pemrograman Terstruktur

 Pemrograman/Sekuensial /Berurut: Pascal, Basic


 Metode atau teknik pemrograman yang mengalir
(berurut) dari atas ke bawah, dari kiri ke kanan,
dapat juga bercabang dan berulang
 Merupakan konsep dasar dalam berbagai
pendekatan pemrograman

 Dipelajari di MK Pemrograman Dasar


Object Oriented Programming

 Pemrograman Berorientasi Objek


 C++, Java and C#

 Memodelkan bagaimana manusia memandang


sesuatu sebagai sebuah objek

 Dipelajari di MK Pemrograman Lanjut


Jenis Program berdasarkan Output /
Interaksi Pengguna

 Console
 Console with GUI
 Desktop / Windows / GUI
 Web
 Mobile
 Wearable
EVOLUSI HUMAN-COMPUTER
INTERACTION

COMMAND LINE GRAPHICAL NATURAL USER


INSTRUCTION USER INTERFACE INTERFACE
Console Programming

 Input & Output program pada layar console


 Command line console
 Input dengan Keyboard komputer
Desktop / Windows / GUI

Input: Mouse, Touchscreen


Natural User Interface
Terapan Pemrograman

 Pemrograman Windows: Visual Basic, Visual Studio


 Pemrograman Web:
• Markup Language (HTML, XML)
• Script style (Javascript, AJAX)
• Server Programming: PHP, Ruby, Phyton, Java
 Pemrograman Embedded: C
 Pemrograman Game: C++, C#, Swift
 Pemrograman Mobile: Java (Android), Symbian,
Objective-C, Swift (iOS)
Jaringan Komputer

 Komputer yang saling terhubung satu dengan yang


lain

 Intranet dan Internet

 Revolusi Industri 4.0  Internet  Cloud Computing

29
Internet dan Internet of Thing

 Internet
• Dikembangkan oleh ARPA (Advance Research Project
Agency) -> Salah satu divisi Kementrian Pertahanan
Amerika
• Persiapan perang dunia ketiga
• Berkembang ke dunia pendidikan dan komersial

 Internet of Thing
• Memanfaatkan Internet untuk berbagai kegiatan yang
menunjang aktivitas manusia
• Internet + Pengendali +Sensor

30
Profesi

31
Profesi Programmer

 Desktop Application Programmer


 Software Programmer / Developer
 Web Programmer / Developer
 Mobile Apps Programmer / Developer
 Embedded System Programmer
 Scientist / Researcher
 Network Administrator
 Database Apps Developer
 etc..
Profession
Role & Technology

Role What technology you should Learn

Core programming languages such as C/C++. Should


System Programmer have a good understanding of how computers work.
Objective-C or Swift for Apple’s devices and Java for
Mobile Programmer Android devices.
Mainly C/C++, but depends on the choice of the
Game Programmer programmer. Can use Python, Java as well.

Front-End Programmer HTML5, CSS3, JavaScript and associated frameworks


such as AngularJS, node.js etc.
Any of the backend programming languages such as
Back-End Programmer PHP, Java, .NET, Python, Ruby. Database technologies
such as SQL, MongoDB, NoSQL, etc.
Video

 Dari Mana Duitnya? - App (dan Game) Developer


 https://www.youtube.com/watch?v=8Cw0ak5nwm
c
 Modal Menjadi Programmer
 https://www.youtube.com/watch?v=9cFZ6WedE4U
Watch it at Home

 Cara Menjadi Programmer Andal Menurut Googler


 https://www.youtube.com/watch?v=OVJ733Yv3Sw
(12 menit)
Other Language

• C++ • Cobol
• Pascal • Fortran
• Basic • Processing
• C# • Lua
• Javascript • TCL
• PHP • Clojure
• Phyton • R Language
• Ruby • Go Language
Language to Learn

41
PROGRAMMING LANGUAGE 2019

Language Origin 2015 2016 2017 2018 2019 Main Purpose


Web development, Dynamic
Javascript 1995 54.4% 55.4% 62.5% 71.5% 67.8% contents, Client and Server
side
Java 1995 37.4% 36.3% 39.7% 45.4% 41.1% Enterprise Application
1971/7   – Automation and system
Bash/Shell 9
 –  – 40.4% 36.6%
admin
Python 1991 23.8% 24.9% 32.0% 37.9% 41.7% General purpose
PHP 1995 29.7% 25.9% 28.1% 31.4% 26.4%
Web development, Server-
side
1980/8 20.6% 19.4% 22.3% 24.6%
C++ 23.5% General purpose
3
General Purpose, Low-level
C 1972 16.4% 15.5% 19.0% 22.1% 20.6%
programming
Ruby 1995 8% 8.9% 9.1% 10.3% 8.4% Web development
R 1993  –  – 4.5% 6.0% 5.8% Statistical Computing
Objective-C 1986 7.8% 6.5% 6.4% 7.3% 4.8% General purpose
Bagaimana berpikir
layaknya programmer
Pelajaran dalam memecahkan masalah

43
Bagaimana memecahkan masalah?

 Problem solving adalah meta-skill


 Cara “brute-force”/”trial-and-error”
1. Coba sebuah solusi
2. Jika tidak berhasil, coba lainnya
3. Jika tidak berhasil, ulangi langkah 2 hingga kehabisan
ide
 Cara ini tidak efektif dan yang paling buruk,
membuang-buang waktu
• meski kadang berhasil

44
Bagaimana memecahkan masalah?

 Cara terbaik menyelesaikan masalah:


1. Memiliki kerangka kerja (framework) pemecahan masalah
2. Selalu berlatih (practice)

• “Almost all employers prioritize problem-solving skills first.


• Problem-solving skills are almost unanimously the most
important qualification that employers look for….more than
programming languages proficiency, debugging, and system
design.
• Demonstrating computational thinking or the ability to break
down large, complex problems is just as valuable (if not more
so) than the baseline technical skills required for a job.” —
Hacker Rank (2018 Developer Skills Report)

45
Kesalahan terbesar noob programmer

 Tiap orang berbeda dalam memecahkan masalah, tapi


bila dimulai dengan prinsip yang baik, maka dapat
memecahkan masalah dengan jauh lebih cepat.

 “Kesalahan terbesar programmer baru adalah fokus


pada belajar sintaksis, bukannya belajar
memecahkan masalah”
• “The biggest mistake I see new programmers make is
focusing on learning syntax instead of learning how to
solve problems.” — V. Anton Spraul

46
Kerangka Kerja Pemecahan Masalah


UNDERSTAND

PLAN

DIVIDE Debug

Stuck Reasses
?
Research

ALWAYS PRACTICE! 47
Kerangka Kerja Pemecahan Masalah

1. Memahami masalah (understand)


• Pahami apa yang ditanyakan
• Kebanyakan masalah dianggap sulit, karena tidak paham
• Coba jelaskan permasalahan yang dihadapi
• Tulis ulang, ringkas masalah
• Buat coretan atau gambar diagram

• “Bila kau tidak bisa menjelaskan sesuatu secara


sederhana, maka sebenarnya kau tidak memahaminya”
• “If you can’t explain something in simple terms, you don’t
understand it.” — Richard Feynman

48
Kerangka Kerja Pemecahan Masalah

2. Membuat rencana (plan)


• Jangan langsung mencoba menyelesaikan masalah tanpa
rencana
• Rencanakan solusi
• Tidak ada yang dapat membantu kalau tidak ada langkah-
langkah yang baik
• Beri otak waktu untuk menganalisis masalah dan
memproses informasi
• Untuk merencakan secara baik, jawab pertanyaan:
• “Diberikan input X, apa langkah-langkah

49
Kerangka Kerja Pemecahan Masalah

3. Membagi Masalah Menjadi Sub-Masalah (Divide)


• Ini adalah langkah yang penting
• Jangan pernah memecahkan masalah besar sekaligus
• Bagi menjadi sub-masalah, karena sub-masalah lebih
mudah diselesaikan
• Selesaikan sub-masalah satu demi satu, dimulai yang paling
mudah
• Paling mudah adalah yang paling tahu/mendekati jawabannya
• Sub-masalah tidak tergantung pada sub-masalah lainnya
• Hubungkan semua “sub-masalah”  solusi utama masalah

50
Kerangka Kerja Pemecahan Masalah

4. Otak buntu (Stuck)


• Bagaimana bila mengalami kebuntuan, tidak dapat
memecahkan sub-masalah?
• Pertama-tama, ambil nafas dalam-dalam, beristirahat!
• Semua ini pasti pernah terjadi ke setiap orang
• Programmer/problem solver yang baik akan selalu ingin
tahu tentang bug/error, bukan kesal/marah-marah!

51
Mengatasi Kebuntuan

1. Awakutu (Debug): Berjalan selangkah demi


selangkah dari solusi yang dibuat untuk
menemukan kesalahan yang terjadi. Ini dikenal
dengan debugging

Seni mengawakutu adalah mencari tahu apa yang


sebenarnya dilakukan program, bukannya apa
yang kita pikir apa yang seharusnya program
lakukan

52
Mengatasi Kebuntuan

2. Menilai kembali (Reasses): Coba mundur


selangkah. Lihat masalah dari perspektif yang lain.
Apakah ada yang bisa diabstraksikan ke pendekatan
yang lebih umum?

• Kadang kita terjebak dalam detail suatu masalah, sehingga


melewatkan prinsip umum yang dapat memecahkan
masalah di tingkat lebih umum
• Misalnya memecahkan masalah penjumlahan angka:
1+2+3+…+ n, padahal Gauss dengan sederhana
menggunakan rumus n(n+1)/2, menghindari semua
penjumlahan panjang

53
Mengatasi Kebuntuan

3. Meneliti (Research)
• Google adalah teman terbaik.
• Masalah yang kita hadapi, pasti pernah diselesaikan orang
lain. Cari orang itu atau solusinya. Bahkan, meski kita sudah
bisa menyelesaikannya, kita dapat belajar dari perspektif
solusi orang lain!

• Cari solusi untuk sub-masalah, bukan masalah besarnya.


• Tanpa usaha, kita tidak akan belajar! Bila tidak belajar, kita
hanya buang-buang waktu!
• Apakah mau 4-7 tahun kuliah tapi tidak bisa menyelesaikan
masalah/membuat program padahal kuliah di Fakultas Ilmu
Komputer?!
54
Selalu Berlatih!

 Jangan berharap bisa dalam waktu satu minggu.


 Bila ingin menjadi pemecah masalah (problem-
solver) yang baik, selesaikan banyak masalah!
 Selalu mencoba, mencoba, mencoba dengan cara
berlatih.
 Semua hanya masalah waktu hingga kita dapat
mengenali “masalah ini dapat dengan mudah
diselesaikan dengan <konsep yang dipelajari>”

55
Selalu Berlatih!

 Bagaimana latihannya? Ada banyak pilihan


• Teka-teki, masalah matematika, catur, Sudoku, Go,
monopoli, gim video, dll.
 Semua orang sukses memiliki kebiasaan belatih
“micro problem solving”: Peter Thiel bermain catur,
Elon Musk bermain gim video.
 Tapi tidak berarti kita harus main gim!
 Fondasi sebenarnya dari bermain adalah
memecahkan masalah (problem solving)

56
Selalu Berlatih!

 Sebagai contoh untuk berlatih membuat program:


 Coba untuk selalu berlatih memecahkan masalah
coding minimal satu tantangan, misalnya di
• Coderbyte (https://coderbyte.com/)
• HackerRank (https://www.hackerrank.com/)

 Setiap masalah selalu memiliki persamaan pola,


cari tahu pola untuk memecahkan masalah besar

57
Kesimpulan

 Berpikir sebagai programmer: memiliki kerangka


kerja pemecahan masalah dan selalu berlatih
 Memecahkan masalah/membuat program
bukanlah bakat!
 Memecahkan masalah/membuat program adalah
keterampilan yang harus selalu diasah

58
Kesimpulan

 “Just when you think you’ve successfully navigated one


obstacle, another emerges. But that’s what keeps life
interesting.[…]
 Life is a process of breaking through these impediments — a
series of fortified lines that we must break through.
 Each time, you’ll learn something.
 Each time, you’ll develop strength, wisdom, and perspective.
 Each time, a little more of the competition falls away. Until all
that is left is you: the best version of you.” — Ryan Holiday
(The Obstacle is the Way)

59
Referensi
 https://www.freecodecamp.org/news/how-to-think-like-a-p
rogrammer-lessons-in-problem-solving-d1d8bf1de7d2/

60
Ada pertanyaan?

61
Terima Kasih

62

Anda mungkin juga menyukai