algoritma & pemrograman

algoritman dan pemrograman

persiapan

Sebelum kita belajar marilah sejenak kita berdoa kepada Alloh SWT, semoga kita senantiasa dalam lindungan-Nya, diberikan kemudahan dalam segala urusan, bersyukur atas segala kenikmatan yang Alloh berikan kepada kita dan semoga ilmu yang kita pelajari membawa manfaat. Berdoa disilahkan.


kompetensi dasar

  • 3.8.1. Mengenal notasi algoritma.

  • 3.8.2. Mengenal struktur/ templates program dalam bahasa yang diajarkan.

  • 3.8.3. Memahami variabel, value, konstanta, ekspresi dan instruksi input/output.

  • 3.8.4. Memahami mekanisme eksekusi kondisional dan loop.

  • 3.8.5. Memahami struktur data dasar (array sederhana).

  • 4.8.1. Menulis program sederhana dengan satu program utama yang memakai salah satu atau gabungan dari pengetahuan 3.8.1 sampai dengan 3.8.5

  • 4.8.2. Mengkombinasikan struktur kontrol dan mengetahui akibatnya, berdasarkan dengan pengetahuan 3.8.1 sampai dengan 3.8.5

tujuan pembelajaran

Melalui kegiatan pembelajaran dengan pendekatan Computational Thinking dan STEMA Informatika serta menggunakan model cooperative learning dan STAD (Student Team Achievement Divisions) peserta didik dapat :

Menjelaskan konsep algoritma, struktur dasar algoritma, variabel, tipe data, operator, pseudocode, flowchart serta penggunaan tool flochart sehingga peserta didik dapat membangun kesadaran akan kebesaran Tuhan YME, menumbuhkan prilaku disiplin, jujur, aktif, kreatif responsip, santun, bertanggungjawab, dan kerjasama.

presensi siswa

Klik tombol dibawah ini untuk mengisi presensi. Presensi dilakukan sesuai jadwal pelajaran. Kedisiplinanmu juga menjadi penilaian sikap dan karakter. Presensi akan direkap setiap pertemuan.

materi 1

Fungsi dan jenis-jenis port yang terdapat pada console/system unit

Mengenal Notasi Algoritma

Notasi algoritma buka merupakan notasi bahasa pemrograman. Namun notasi ini dapat diterjemahkan kedalam berbagai bahasa pemrograman. Penotasian algoritma harus dilakukan sedemikian hingga mudah dibaca dan dimengerti. Meskipun notasi algoritma tidak berbentuk baku seperti notasi bahasa pemrograman, namun konsistensi terhadap notasi perlu diperhatikan untuk menghindari terjadinya kekeliruan. Bentuk notasi algoritma sebagai berikut :

  1. Notas Deskriptif

Dengan notasi bergaya uraian, deskripsi setiap langkah dijelaskan dengan bahasa yang gamblang. Proses diawali dengan kata kerja seperti 'baca' atau 'membaca', 'hitung', atau 'menghitung', 'bagi' atau 'membagi', 'ganti' atau 'mengganti' dan sebagianya, sedangkan pernyataan kondisional dinyatakan dengan 'jika...maka...'

Contoh : Menyelesaikan permasalahan menghitung luas dan keliling suatu lingkaran

Algoritma Hitung_Luas_dan_Keliling_Lingkaran

DESKRIPSI :

  • Masukkan jari-jari lingkaran (r)

  • Hitung luas lingkaran dengan rumus L=phi*r2

  • Hitung keliling lingkaran dengan rumus K = 2*phi*r

  • Tampilkan luas lingkaran

  • Tampilkan keliling lingkaran


  1. Notasi Diagram Alir (Flowchart)

Flowchart adalah gambaran dalam bentuk diagram alir dari algoritma-algoritma dalam suatu program yang menyatakan arah alur program tersebut.

Contoh : Menghitung luas dan keliling lingkaran yang algoritmanya dinotasikan dalam bentuk diagram alir (flowchart).

3. Notasi Pseudocode

Notasi yang menyerupai notasi bahasa pemrograman tingkat tinggi, khususnya bahasa pascal dan C. Umumnya mempunyai notasi yang hampir mirip untuk beberapa instruksi dalam beberapa bahasa pemrograman, seperti notasi if-then-else, while-do, repeat-until, read, write dan sebagainya.

Contoh :

Menyelesaikan permasalahan menghitung luas dan keliling suatu lingkaran dengan menggunakan bentuk pseudocode :

Algoritma Hitung_Luas_dan_Keliling_Lingkaran

{Dimasukkan nilai jari-jari lingkaran (phi). Carilah dan cetak luas dan keliling lingkaran tersebut dengan menggunakan rumus L=phi*r*r dan K=2*phi*r}

DEKLARASI :

const phi = 3,14

r,L,K = real

DESKRIPSI :

read(r)

L<----phi*r*r

K<---2*phi*r

write('Luas lingkaran = ',L)

write('Keliling lingkaran = ',K)

materi 2


Mengenal Struktur Program

  1. Aturan Penulisan Algoritma

Teks algoritma berisi deskripsi langkah-langkah penyelesaian masalah. Deskripsi tersebut dapat ditulis dalam bentuk notasi apapun, asalkan mudan dibaca dan dimengerti. Tidak ada notasi yang baku dalam penulisan teks algoritma. Tiap orang dapat membuat aturan penulisan dan algoritma sendiri. Namun agar notasi algoritma dapat dengan mudah ditranslasi kedalam notasi bahasa pemrograman, maka sebaiknya notasi algoritma itu berkoresponden dengan notasi bahasa pemrograman secara umum.

Contoh perintah : Tulis nilai x dan y

Dalam notasi algoritma menjadi : write (x,y)

Dalam Bahasa Turbo C ditulis : printf("%d %d",x,y);


  1. Tipe, Nama dan Nilai

  • Tipe

Pada umumnya program komputer bekerja dengan memanipulasi objek (data) didalam memori. Objek yang akan diprogram bermacam-macam tipenya, misalnya tipe numerik, karakter, string dan record (rekaman)

Tipe data dapat dikelompokkan menjadi dua yaitu tipe dasar dan tipe bentukan. Tipe dasar adalah tipe yang langsung dapat dipakai, sedangkan tipe bentukan dibentuk dari tipe dasar atau dari tipe bentukan lainyang sudah didefinisikan

Suatu tipe diacu dari namanya. Nilai-nilai yang dicakup oleh tipe tersebut dinyatakan didalam ranah (domain) nilai. Operasi-operasi (beserta operator) yang dapat dilakukan terhadap tipe tersebut juga didefinisikan. Dengan kata lain, suatu tipe dinyatakan dengan namanya, ranah nilai yang dikandungnya, cara menuliskan konstantanya dan operasi yang dapat dilakukan padanya

  1. Tipe Dasar

Dalam bahasa pemrograman yang termasuk tipe dasar adalah :

  • Bilangan logika

  • Bilangan bulat

  • Karakter atau string

  • Bilangan riil


  1. Tipe Bentukan

Tipe bentukan adalah tipe yang didefinisikan sendiri oleh pemrogram (user define). Tipe bentukan disusun oleh satu atau lebih tipe dasar. Ada dua macam tipe bentukan :

  • Tipe dasar yang diberi nama dengan nama tipe baru

Contoh : tipe bilangan bulat : integer

Variabel bilangan bulat adalah tipe bilangan bulat yang sama saja dengan tipe integer. Misalkan kita mempunyai sebuah variabel yang bernama X dan bertipe bilangan bulat, maka artinya variabel X tersebut juga bertipe integer


  • Rekaman (record)

Rekaman disusun oleh satu atau lebih field. Tiap field menyimpang data dari tipe dasar tertentu atau dari tipe bentukan lain yang sudah didefinisikan sebelumnya. Nama record ditentukan oleh pemrograman. Karena strukturnya yang disusun atas field-field, maka rekaman dinamakan juga tipe terstruktur (structured type)


  • Nama

Setiap objek di alam mempunyai nama. Nama diberikan agar objek tersebut mudah diidentifikasi, diacu dan dibedakan dari objek lainnya. Didalam algoritma nama dipakai sebagai pengidentifikasi "sesuatu" dan pemrograman mengacu "sesuatu" itu melalui namanya. Karena itu tiap nama haruslah unik, tidak boleh ada dua buah nama yang sama

Didalam algoritma "sesuatu" yang diberi nama dapat berupa berikut :

  1. Variabel

  2. Konstanta

  3. Tipe Bentukan

  4. Nama Fungsi

  5. Nama Prosedur

Suatu hal yang penting untuk diperhatikan adalah nama sebaiknya interpretatif, yaitu mencerminkan nilai intrinsik atau fungsi yang dikandungnya. Pemrogram sangat dianjurkan untuk memberikan penjelasan terhadap nama yang didefinisikan.

Semua nama yang digunakan dalam algoritma harus didefinisikan atau dideklarasikan dibagian deklarasi. Bagian deklarasi dipakai sebagai tempat mengacu suatu kata untuk diketahui makna atau terjemahannya. Tempat untuk menjelaskan nama dan tipe dari nama tersebut.


  • Nilai

Nilai adalah besaran dari tipe data yang sudah didefinisikan. Nilai dapat berupa isi yang disimpan oleh nama variabel atau nama konstanta, nilai dari hasil perhitungan atau nilai yang dikirim oleh fungsi. Algoritma pada hakikatnya adalah memanipulasi nilai yang disimpan didalam elemen memori. Nilai yang dikandung oleh variabel dimanipulasi antara lain dengan cara mengisikannya ke variabel lain yang bertipe sama, dipakai untuk perhitungan atau dituliskan ke peranti keluaran.

Contoh algoritma : Mencetak string "Halo, apa kabar?" ke peranti keluaran

Versi 1. String "Halo, apa kabar?" langsung dicetak tanpa menggunakan variabel.

Algoritma :

Deklarasi

(tidak ada)

Deskripsi

write("Halo,apa kabar?")


Versi 2. String "Halo,apa kabar?" disimpan didalam sebuah variabel bertipe string

Algoritma :

Deklarasi

ucapan : string

Deskripsi

ucapan <--------- 'Halo, apa kabar?'

write (ucapan)


Versi 3. String "Halo,aoa kabar?" disimpan sebagai konstanta

Algoritma :

Deklarasi

const ucapan = 'Halo, apa kabar?'

Deskripsi

write (ucapan)

Keluaran yang dihasilkan oleh algoritma versi 1,2 dan 3 adalah :

Halo, apa kabar ?


materi 3


Mekanisme Eksekusi Kondisional dan Loop

  1. Struktur Percabangan

Pada pascal ada beberapa script atau code yang digunakan untuk menjalankan suatu percabangan, seperti struktur if-then, struktur if-then-else, struktur case-of dan struktur case-of-else. Secara mendasar terdapat dua struktur pernyataan percabangan di dalam bahasa pemrograman pascal, yaitu pernyataan if dan pernyataan case..of. Pernyataan-pernyataan tersebut digunakan untuk menangani percabangan atau memilih suatu statement yang berdasarkan suatu syarat. Syarat ini harus terpenuhi jika akan melakukan penyeleksian yang diinginkan

Masing-masing memiliki kelebihan dan kekurangan, seperti pada struktur case..of itu memiliki kelebihan dibandingkan struktur if, yakni struktur script atau code nya lebih ringkas dibanding pada struktur if. Tetapi struktur case..of juga memiliki kekurangan, yakni tidak dapat menjalankan percabangan didalam percabangan seperti halnya yang dapat dilakukan oleh struktur if. Struktur percabangan ada beberapa macam, antara lain struktur if-then, struktur if-then-else, struktur case-of dan struktur case-of-case. Setiap struktur memiliki perbedaan

  • Penerapan Struktur If-Then

Statement IF-THEN digunakan untuk menyeleksi suatu kondisi, jika kondisi yang diseleksi terpenuhi, maka statement yang mengikuti THEN akan diproses. Tetapi apabila kondisi tidak terpenuhi, maka yang akan diproses adalah statement berikutnya.

Bentuk umum :

If Kondisi Then

Pernyataan;

Contoh program :


Hasil eksekusi dari program :


  • Penerapan Struktur If-Then-Else

Statement IF-THEN-ELSE digunakan untuk menyeleksi suatu kondisi. Statement 1 akan diproses jika kondisi yang diseleksi benar, sedangkan statement 2 akan diproses jika kondisi yang diseleksi tidak terpenuhi.

Bentuk umum :

If Kondisi Then

Pernyataan-1;

Else

Pernyataan-2;

Contoh program :



Hasil eksekusi :


  • Penerapan Struktur Case-Of

Statement CASE-OF digunakan untuk memilih jika terdapat lebih dari dua kondisi yang setiapnya memerlukan penanganan yang berbeda

Bentuk umum :

Case <Variabel> of

Alternatif1 : <Pernyataan-1>;

Alternatif1 : <Pernyataan-2>;

Alternatif1 : <Pernyataan-3>;

Alternatif1 : <Pernyataan-n>;

End.

Contoh program :



Haasil eksekusi program :


  • Penerapan Struktur Case-Of-Else

Struktur CASE-OF..ELSE merupakan pengembangan dari struktur CASE-OF dan juga merupakan pengembangan dari standar Pascal. Pada struktur CASE-OF bila tidak ada kondisi yang terpenuhi berarti tidak ada statement di dalam lingkungan CASE-OF yang diproses. Dengan struktur CASE-OF..ELSE, bila tidak ada kondisi yang terpenuhi, maka statement yang akan diproses dalam lingkungan CASE-OF adalah statement yang ada di ELSE

Bentuk umum :

Case <Variabel> of

Alternatif1 : <Pernyataan-1>;

Alternatif1 : <Pernyataan-2>;

Alternatif1 : <Pernyataan-3>;

Alternatif1 : <Pernyataan-n>;

Else

Alternatif jika bukan pilihan diatas

End.

Contoh program :


Hasil eksekusi program :


  • Percabangan didalam Percabangan

Percabangan if bersarang atau sering disebut juga dengan percabangan berantai ini sebenarnya sama seperti statement if pada umumnya, hanya saja ada tambahan percabangan lagi setelah percabangan yang sebelumnya

Bentuk umum :

If Kondisi1 Then

Begin

If Kondisi1 A then Pernyataan-1A

Else

If Kondisi1B Then Pernyataan 1B

Else pernyataan 1C

End

Else

If Kondisi2 Then

Begin

If Kondii2A then Pernyataan-2A

Else

If Kondisi2B then pernyataan 2B

Else pernyataan 2C

End

Else Pernyataan2;


Contoh program :


Hasil eksekusi program :


  1. Struktur Perulangan/Loop

Perulangan adalah sebuah perintah yang menjalankan suatu perintah tertentu berulang-ulang sampai suatu kondisi terpenuhi. Disinilah letak kelebihan komputer dibanding manusia, yaitu mampu melakukan hal yang sama berulang kali tanpa kesalahan akibat bosan atau lelah. Bicara tentang loop atau perulangan hampir semua bahasa pemrograman menggunakan loop (perulangan). Ada 3 jenis dari perulangan, yaitu For..Do, Repeat...Until dan While...Do

  • For..Do

Looping for-do digunakan untuk mengulang statement berulang kali sejumlah yang ditentukan. Bila terdapat lebih dari satu statement yang ada didalam looping maka menggunakan begin..end; jika hanya satu blok saja tidak perlu menggunakan begin..end;

Ada tiga bentuk perulangan For..Do yaitu :

  1. For..Do Positif

For..Do positifi adalah looping dari perhitungan kecil ke perhitungan besar. Bentuk umumnya adalah :

For var_int : var_int to var_int do statement yang diulang;

untuk lebih jelasnya coba perhatikan contoh dibawah ini :

Uses crt;

var i : integer;

nilai : char;

begin

clrscr;

nilai:='Fahmi Idrus';

For i:= 1 to 5 do

writeln (nilai);

end.


Outputnya :


  1. For..Do Negatif

For..Do negatif adalah looping dari perhitungan kecil ke perhitungan besar. Bentuk umumnya adalah :

For Var_int:=var_int to var_int do statement yang diulang;

Perhatikan contoh :

Uses crt;

var i : integer;

nilai : integer;

begin

clrscr;

nilai:=1;

for i:=5 to 1 do

begin

writeln(nilai);

nilai:=nilai+1;

end;

end.


Outputnya :


  1. For..Do Tersarang

For..do tersarang yaitu looping yang ada didalam looping lainnya. Looping yang lebih dalam akan diproses terlebih dahulu hingga habis kemudian looping yang lebih luar bertambah atau berkurang dan memproses kembali looping yang paling dalam. Untuk lebih jelasnya perhatikan listing code program berikut :

Program looping_tersarang;

uses wincrt;

var i,j : integer;

begin

for i:= 1 to 2 do

begin

for j:=1 to 3 do

write(i,j,' ');

writeln;

end;

readln;

end.

Outpuntya :

  • While..Do

Perulangan while do adalah perulangan bersyarat yang paling umum digunakan. Perintah ini akan terlebih dahulu memeriksa kebenaran nilai yang diujikan, kemudian menjalankan dan mengulang perintah selama hasil pengujian nilai bernilai benar. Terkadang jika salah dalam pembuata statement ini, perulangan while do dapat mengakibatkan perulangan yang tidak dapat berhenti atau dapat dikenal denganistilah infinite loop, hal ini dapat mengakibatkan terkurasnya ruang memori yang kosong. Untuk jelasnya perhatikan listing dibawah ini :

uses crt;

var i:integer;

begin

clrscr;

i:=0;

while i < 5 do

begin

writeln(i);

i:=i+1;

end;

readln;

end.


Outputnya :


  • Repeat........Until

Blok pengulangan jenis ini sebenarnya mirip dengan blok pengulangan shile, perbedaannya hanya pada jenis ini pengulangan akan terus dilakukan apabila kondisi yang didefinisikan masih bernilai false. Dengan kata lain, pengulangan hanya akan dihentikan apabila kondisi bernilai true. Dalam pengulangan ini kondisi akan dituliskan diakhir blok. Hal ini tentu menyebabkan pada blok pengulangan jenis ini statement minimal akan dieksekusi atau bernilai true. Pengulangan jenis ini pada umumnya digunakan untuk kasus-kasus pengulangan yang tidak bergantung pada kondisi awal. Bentuk umum pendeklarasiannya :

Program statemenrepeat1;

uses wincrt;

var

i : ineteger;

begin

clrscr;

i:=1;

repeat

writeln('SMA Negeri 1 Magetan');

i:=i+1;

until (i>5);

readln;

end.


Outputnya :


materi 4

Array

Array merupakan tipe data berstruktur yang berisi kumpuln komponen/elemen dengan tipe sama, yang menggunakan identifier yang sama, dengan masing-masing elemen memiliki indeks tersendiri, yang biasa dinamakan indeks array. Melalui indeks array ini setiap elemen dalam array dapat diakses secara langsung. Pendefinisian tipe array terdiri terdiri dari atas kata baku ARRAY diikuti dengan tipe indeks yang diletakkan dalam tanda kurung siku, kata baku OF dan kemudian tipe-komponen

ARRAY[tipe-indeks-1,.....,tipe-indeks-n] OF tipe-elemen

Jumlah tipe indeks dapat terdiri lebih dari satu. Jika terdapat lebih dari satu tipe-indeks, maka tipe indeks yang satu dengan lainnya dipisahkan dengan tanda koma. Masing-masing tipe dari tipe indeks dapat berbeda. Perlu diketahui, tipe dari tipe indeks dapat berupa sembarang tipe ordinalm kecuali integer. Jadi dapat berupa tipe char, boolean atau tipe skalar buatan dan juga tipe subrange. Tipe indeks menyatakan tipe nilai dari indeks array. Tipe komponen menyatakan tipe dari elemen yang terdapat dalam array dan dapat berupa sembarang tipe.

Contoh deklarasi tipe array :

TYPE

Buahcatur = (Pion, Gajah, Benteng, Perdanan Menteri, Raja);

Warna = (putih, Hitam);

Pilihan = ARRAY [warna,1..6] of Buahcatur;

Pada contoh diatas, pilihan mengandung 2 tipe indeks, dengan tipe pertama berupa skalar buatan dan tipe kedua berupa subrange.

Contoh yang lain :

TYPE

Operator = (plus,minus,kali,bagi);

Nilai = 1..0;

Tanda = ARRAY [operator] of integer;

ArrayKar = ARRAY [char] of integer;

VAR

Jumlahtanda : tanda;

Cacahkarakter : arraykar;

Vektor : ARRAY[nilai] of String[15]

Contoh pendefinisia tipe arraay yang salah : (tipe-indeks berupa integer tidak diperkenankan)

TYPE Nilai = integer;

daftar = ARRAY[Nilai] OF real;


  1. Array Berdimensi Satu

Array berdimensi satu merupakan array dengan ciri memiliki tipe-indeks hanya sebuah dan tipe komponen tidak berupa array. Contoh array berdimensi satu :

VAR x : ARRAY[1..8] of real;

menyatakan bahwa indeks-array dari variabel x dapat berupa 1,2,3...8 dan isi array bertipe real. Sedangkan

VAR Huruf : ARRAY['A'.."Z"] of integer;

menyatakan bahwa indeks-array dari variabel huruf dapat berupa karakter A,B,C..,Z dan tipe isi array adalah integer. Ukuran Array x sama dengan 8. Ukuran Array Huruf sama dengan 26.

Pengaksesan terhadap suatu array, dapat dibedakan dalam dua macam operasi, yaitu penyimpanan dan pengambilan elemen array. Untuk menjelaskan hal ini, diambil contoh :

TYPE

DaftarNilai = ARRAY[1..3] OF integer;

VAR

D : DaftarNilai;

Pendeklarasian seperti diatas menginstruksikan kepada compiler supaya menyediakan 3 lokasi memori untuk menyimpan data integer dari variabel D, yaitu lokasi dari D[1], D[2], dan D[3]. Jadi masing-masing indeks-array [1..3]dari D memiliki lokasi penyimpanan tersendiri. Untuk menyimpan suatu nilai ke dalam lokasi penyimpanan, dapat dilakukan dengan instruksi D[i] := nilai, dengan i merupakan indeks-array dan nilai adalah bilangan yang hendak disimpan di D[i]. Sebagai contoh :

D[1]:=320;

setelah pengeksekusian pernyataan, D[1] bernilai 320.

Untuk mengambil isi array D, misalnya D[1], dapat digunakan instruksi :

Writeln(D[1]);

yang akan menampilkan nilai D[1] pada layar. Contoh lain :

X:=D[1]

memberikan nilai dari D[1] ke variabel X


  1. Array Multidimensi

Yang termasuk dalam array multidimensi yaitu array yang memiliki lebih dari satu dimensi. Ciri dari tipe array ini, yakni mempunyai tipe indeks lebih dari satu atau tipe komponen berupa array yang lain. Contoh array dengan tipe komponen berbentuk array :

uji kompetensi