Link Tadarus Virtual https://meet.google.com/ymr-xxuu-gza setiap hari mulai pukul 07.00 - 07.15
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.
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
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.
Klik tombol dibawah ini untuk mengisi presensi. Presensi dilakukan sesuai jadwal pelajaran. Kedisiplinanmu juga menjadi penilaian sikap dan karakter. Presensi akan direkap setiap pertemuan.
Fungsi dan jenis-jenis port yang terdapat pada console/system unit
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 :
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
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)
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);
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
Tipe Dasar
Dalam bahasa pemrograman yang termasuk tipe dasar adalah :
Bilangan logika
Bilangan bulat
Karakter atau string
Bilangan riil
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 :
Variabel
Konstanta
Tipe Bentukan
Nama Fungsi
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 ?
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 :
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 :
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 :
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 :
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 :
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;
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
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 :