AhmadDahlan.NET – Berikut ini adalah Rencana Pembelajaran Semester – RPS Algoritma dan Pemograman dengan Bahasa Pascal untuk Mahasiswi Jurusan Fisika.
A. Deskripsi Mata Kuliah
Mata kuliah Algoritma dan Pemograman adalah Mata kuliah yang mempelaari tentang struktur dasar Algoritma, Notasi Algoritmik, tipe data, Value, Ekspresi, Struktur Kontrol, pemilihan penggunaan fungsi, prosedur pengulangan, pemropesan sekuensial dan operasi data dengan struktu array. Mata kuliah ini adalah mata kuliah pra syarat untuk mata kuliah Fisika Komputasi, Pengantar e-Learning, Elektronika Digital dan Instrumentasi.
Asumsi yang diterapkan pada Metode Eular adalah suku terakhir adalah turunan ke dua yang dapat diabaikan sehingga :
y_{i+1}=y_i+y'h
dimana y’ = f(xi,yi)
Nilai turunan dari y dengan metode Eular didapatkan dari mengekstrapolasi garis linier diinterval h, sehingga semakin banyak interval nilai h maka semakin besar error yang didapatkan.
A. Studi Kasus
Misalkan sebuah persamaaan diferensial orde I seperti berikut :
\frac{dy}{dx}=-2x^3+12x^2-20x +8,5
dimana x = 0 sampai x = 4 dengan lebar langkah 0.5 dengan syarat awal y(0) = 1.
Langkah 1. Hitung terlebih dahulu solusi analitik dari persamaan tersebut !
Langkah 2. Tentukan f(x) = -2x3+12x3-20x+8.5, kemudian subtitusi nilai x ke dalam persamaan tersebut!
Langkah 3. Hitung nilai y menggunakan persamaan : yi+1=yi+y’h
y
x
y’
y
0
8,5
1
0,5
…
…
1
…
…
…
…
…
4
…
…
Langkah 5. Buat Algoritma dengan Metode tersebut di Matlab.
Contoh Algortima dan Scriptnya di Matlab!
clear all
clc
format long
b = 4; % batas atas
a = 0; % batas bawah
h = 0.5; % semakin nilai semakin detail hasil yang ditunjukkan
N = (b-a)/h;
y0 = 1; % nilai y awal
x0 = 0; % nilai x awal
% inisialisasi array x dan y
x = zeros(1, N+1);
y = zeros(1, N+1);
w = zeros(1, N+1);
%perubahan t per step
for i = 1:N+1
x(i) = a + (i-1)*h;
end
%solusi y menggunakan metode Euler
y(1) = y0;
for i = 2:N+1
y(i) = y(i-1) + h*(-2*x(i-1)^3 + 12*x(i-1)^2 - 20*x(i-1) + 8.5);
end
%solusi analitik
for i = 1:N+1
w(i) = -0.5*x(i)^4 + 4*x(i)^3 - 10*x(i)^2 + 8.5*x(i) + 1;
end
% Plot hasil
plot(x, y, 'b', x, w, 'r');
xlabel('x');
ylabel('y');
legend('Numerik', 'Analitik');
title('Perbandingan Solusi Numerik dan Analitik');
Silahkan Run Script tersebut, disana akan terlihat perbedaan solusi antara Metode Euler dan Metode Analitik.
Tugas Latihan !
Gambarlah Grafik antara hasil Analitik dan Metode Euler untuk persamaan diberensial biasa berikut :
AhmadDahlan.NET – Tipe data dalam Bahasa Pemograman C akan selalu diasosiasikan dengan Variabel yang digunakan. Tipe data ini mengacu pada sistem kestensi yang digunakan dalam mendeklarasikan sebuah variabel atau fungsi yang dibangun.
Tipe Data
Pada Bahasa C, Variable dan Tipe data yang digunakan akan menentukan seberapa besar memori yang akan digunakan untuk melakukan proses komputasi dari data.
Tipe data dapat diklasifikasikan sebagai berikut :
Basics – Tipe data aritmatika yang terbagi dalam dua kelompok yakni (1) integer dan (2) floating-point.
Enumerated – Jenis tipe data yang isinya dapat didefenisikan dan berlawan dengan data aritmatika, Enumerated teridiri dari data-data yang berisfat diskrit.
Void – Tipe data tidak bernilai yang menunjukan bahwa tidak nilai yang tersedia.
Derived – Tipe data yang tidak berdiri sendiri dan merupakan jenis type data lain seperti
Pointer
Array
Struktur
Union
Function
Tipe data Array dan Struktur adalah jenis data kolektif yang berfungsi sebagai tipe agregat. Tipe fungsi adalah tipe data yang nilainya ditentukan oleh fungsi.
Type
Ukuran Memori (byte)
Range Data
Char
1
-128 – 127 atau 0 – 255
Int
2 atau 4
-32,768 sampai 32,767
-2,147,483,648 sampai 2,147,483,647
unsigned Int
2 atau 4
0 sampai 65,535
0 sampai 4,294,967,295
Short
2
-32,768 sampai 32,767
unsigned Short
2
0 to 65,535
Float
4
1.2E-38 — 3.4E+38
Double
4
2.3E-308 — 1.7E+308
Long
8
-9223372036854775808 sampai 9223372036854775807
A. Data Integer
Tipe Data Integer adalah data yang berisi angka yang mewakili bilangan bulat. Bilangan Bulat ini adalah bilangan yang tidak memiliki koma dan pada Data Sains, Bilangan Integer ini adalah bilangan Diskrit.
Contoh BIlangan Bulat ini adalah 1, 2, 3, … dan seterusnya. Pada Bahasa C, tipe data Integer terdiri dari banyak tipe seperti yang tertera pada tabel di atas. Ada tipe int yang hanya mengakomodiasi bilangan dari -32,768 sampai 32,767.
Jadi jika misalnya kita ingin menjumlahkan angka 34000 + 2000, maka programer tidak boleh menggunakan data Integer. Lebih khususnya sebenarnya tipe data integer lebih dugunakan untuk mencacah jumlah data saja, tidak pas untuk operasi matematis.
b. Data Float atau Double
Pada tipe data Float atau Double yang menyediakan penulisan data desimal, pemisahnya menggunakna standar titik bukan kome, jadi penulsi 2,3 tidak dikenali tetapi ditulis dengan 2.3.
Penulisan tipe data karakter (Char) harus diapit dengan tanda petik satu agar bisa dikenali batas Char yang dimaksud. Sebagai contoh berikut ini contoh penulisan sederhana di Bahasa C.
#include <stdio.h>
int main(){
int usia = 30;
float berat = 60.3;
double tinggi = 171.00;
printf("Nama saya %s\n", "Ahmad Dahlan");
printf("Usia: %i tahun\n", usia);
printf("Tinggi: %.2f cm\n", tinggi);
printf("Berat: %.2f Kg\n", berat);
printf("\n");
printf("Sekian dan terima kasih \n");
// tanda miring ini membuat tulisan akan diabaikan pada
//bagian hasil dan hanya dijadikan sebagai penjelasn dari
//program
return 0;
}
Hasilnya jika dijalankan :
Nama: Ahmad Dahlan
Usia: 30 tahun
Tinggi: 171.00 cm
Berat: 60.30 Kg
Sekian dan terima kasih
Perhatikan tanda %.2f pada bagian program, sintak ini adalah perintah untuk menunjukkan 2 angka di belakang koma, jika hanya ditulis %f, maka tipa data float dan double secara otomatis akan menuliskan 6 angka di belakang koma.
Nama: Ahmad Dahlan
Usia: 30 tahun
Tinggi: 171.000000 cm
Berat: 60.299999 Kg
Sekian dan terima kasih
B. Tipe Data Void
Tipe data Void adalah defenisi khusus untuk memberikan informasi tidak ada data yang eksis. Tidak ada data yang eksis ini berbeda dengan 0. Dalam bahasa program, 0 ini sudah terdefenisi dan memiliki data meskipun nilainya 0, sehingga bisa dioperasikan, sedangkan Void atau null tidak bisa dioperasikan.
Dalam bahasa program hal ini sangat penting untuk menentukan proses komputasi dari data yang dikelola. Bahkan pada bahasa program yang lebih tinggi (librarinya) seperti Javascript ada tipe data Undifined atau data belum didefenisikan dalam memory.
C. Konversi Type Data
Keunikan dari bahasa C adalah semua tipe data harus didefenisikan di awal pada saat data ingin dituliskan, misalkan kita menulis perintah :
float a = (float) 26;
Angak 26 disini sekalipun bilangan bulan akan dikenal dengan tipe data float. Hal ini jika terjadi kekeliruan tipe data misalnya menyusun program seperti berikut ini.
#include <stdio.h>
void main(){
int x = 7;
int y = 3;
float c = x / y;
printf("Jawaban = %.2f\n", c);
}
Ketika program ini di jalankan akan menghasilkan
Jawaban a / b = 2.00
Padahal seharusnya hasil pembagian 7/3 harusnya 2,333333. Hal ini disebabkan oleh tipe data yang dibagi adalah bilangan bulat (int) sehingga hasilnya akan selalu dibulatkan.
Untuk menkonversi tipe data x dan y ini ke float maka, program harus diberikan instruksi untuk melakukan proses kalkulasi x dan y sebagai float sekalipun sumber asal dari x dan y tersebut adalah integer.
#include <stdio.h>
void main(){
int x = 7;
int y = 3;
float c = (float) x / (float) y;
printf("Jawaban a / b = %.2f\n", c);
}
Maka hasilnya akan menunjukkan 2 angka di belakang koma sesuai perintah print-nya
Jawaban a / b = 2.33
Misalkan ganti perintah %.2f dengan %.28f, maka akan muncul 28 angka di belakang koma, sayangnya hasilnya tidak sama dengan perhitungan asli dimana yakni 2,33333333333333333333 tapi 2.33333325386047363281.
Hasil ini tidak presisi dalam menganalisis angka detail membuat Bahasa C tidak begitu cocok digunakna untuk keperluan komputasi pada ilmu-ilmu eksak, sekalipun ada beberapa layanan yang bisa digunakan untuk melakukan operasi matematis.