Ambil Kertas Selembar Tulis NIM dan Nama Kerjakan
Ambil Kertas Selembar Tulis NIM dan Nama Kerjakan Soal 5 menit kumpulkan
Ini Soalnya : Susun algoritma (Program dalam Bahasa C/C++) untuk menghitung dan mencetak nilai rata-rata 3 buah bilangan berikut : Bilangan pertama : 75 Bilangan ke-dua : 70 Bilangan ke-tiga : 70. Soal tidak perlu ditulis untuk dikumpulkan. Tapi sebaiknya Soal Saudara catat di buku Saudara
Soal-2. 1 Menetak Nilai Rata-Rata dan memilih Tipe Data Susun algoritma (Program dalam Bahasa C/C++) untuk menginput 3 buah bilangan ( nilai Matematika, Fisika dan Kimia ) kemudian mencetak nilai rata-rata ketiga buah bilangan tersebut. 75 70 70 Nilai Rata-Rata scanf cin KEYBOARD 75 70 A B 70 T 215 C R printf 71. 66… 71. 666667 cout MEMORY SCREEN
#include <stdio. h> void main() { int A, B, C, T, R; printf("Matematika : "); scanf(" %i", &A); printf("Fisika : "); scanf(" %i", &B); printf("Kimia : "); scanf(" %i", &C); T = A + B + C; R = T / 3; printf("Nilai Rata-Rata = %i ", R); } Matematika : 75 Fisika : 70 Kimia : 70 Rata-Rata = 71 Bila program ibi di. RUN, dan diinput : 75, 70, dan 70, maka terlihat dilayar sevagai berikut : Matematika : 75 Fisika : 70 Kimia : 70 Rata-Rata = 71 Mengapa tercetak : 71 ? Bukankah seharusnya : 71. 6666. . . Karena variabel R tipenya int (integer) yang hanya menampung nilai integer (bilangan bulat) nya saja
Penjelasan Proses Tipe Data Hasil Proses T = A + B + C; R = T / 3; printf(“%i”, T ); B A C Proses : R T 75 70 70 215 3 71 int int int Proses dalam komputer : T = A + B + C; A B Nilai INPUT proses Tambah, Kurang. Kali, Bagi Hasil Nilai Proses OUTPUT
Sifat Proses : A Nilai INPUT Tipe B Nilai A INPUT proses Tambah, Kurang. Kali, Bagi Hasil Nilai Proses INPUT Tipe B OUTPUT Tipe Hasil Proses int int float int double float int float float doube double int double float double OUTPUT Tipe output, mengambil tipe input yang jumlah Byte nya terpanjang
Proses dalam komputer : Semua variabel integer R = T / 3; T = A + B + C; A int 75 B + T 70 int 145 + konstanta int 215 / 3 int R C 70 int 71 simpan 71 int T int 215 simpan 215 int A ditambah dengan B hasilnya = 145 ditambah dengan C hasilnya 215 , 215 disimpan ke T Ini yang dicetak Karena T dan 3 kedua-duanya bertipe int, maka hasilny bertipe int
Bila R tipenya dibuat : float R = T / 3; / int float konstanta T 215 3 int R int 71 71. 0 float Karena R tipenya float, maka isinya 71. 0 Ini yang dicetak Bila dicetak dengan format “ maka tercetak : %f “ 71. 000000
Bila R tipenya dibuat : float Format : %f Karena Tipe R adalah Floating Point float Kalau formatnya tidak dinyatakan dengan bentuk lain , maka akan dicetak menurut format default yaitu 6 angka dibelakang titik decimal
double float Konstanta dibuat bertipe Tapi R masih bertipe double R = T / 3; T int konstanta / 215 3. 0 double R 71. 666……… 71. 666……. double f loat Kalau konstanta dibuat menjadi 3. 0 , maka oleh komputer Tipe datanya dinyatakan dalam Tipe double
float 4 ? 3. 0 Mengapa bukan 71. 666667 ? Karena tipe float ketelitiannya masih rendah 7 !
Konstanta dibuat bertipe R bertipe float double %16. 12 12 angka dibelakang titik decimal Tipe float ketelitiannya lebih rendah dibandingkan tipe double
double dan R juga beripe : double Bila konstanta bertipe R = T / 3; T int 215 double konstanta / 3. 0 double R 71. 666……… double 71. 666…….
Tipe double
Huruf el kecil 22 angka dibelakang titik decimal Tipe double lebih teliti dari tipe float 71. 666664123535
Soal Tugas Kelas 2. 1 Susun algoritma yang ditulis dalam Bahasa C/C++, untuk mencetak Luas sebuah segitiga bila alas dan tinggi segitiga tersebut sudah diketahui yaitu : Alas = 7 dan Tinggi = 5.
Soal Tugas Kelas 2. 1 Menghitung luas segitiga bila diketahui alas dan tinggi segitiga tersebut
Soal Tugas Kelas 2. 1 Susun algoritma yang ditulis dalam Bahasa C/C++, untuk mencetak Luas sebuah segitiga bila diketahui Alas = 7 dan Tinggi = 5. 7 5 ? A T L A untuk Alas T untuk Tinggi, dan L untuk Luas printf cout ?
7 5 A T 17. 5 L A untuk Alas T untuk Tinggi, dan L untuk Luas cout 17. 5
harus Rumus menghitung Luas sebuah Segitiga Kadang-kadang : Lebih sulit : Mencari , memahami dan menggunakan Rumus, dibandingkan menulis algoritma
dapat ditulis setelah dan konsep atau draf secara manual sudah dibuat
Yang harus dipahami dan Dikuasai sebelumnya BUKAN PERSOALAN MATEMATIKA RUMUS menghitung Luas sebuah segitiga : LUAS = ALAS * TINGGI / 2 atau LUAS = (ALAS * TINGGI) / 2 atau LUAS = ALAS * ( TINGGI / 2) atau LUAS = ALAS * TINGGI * 0. 5 atau LUAS = 0. 5 * ALAS * TINGGI atau dan sebagainya yang valid DALAM BEBERAPA HAL (KASUS), RUMUS TIDAK DIBERITAHUKAN PEMBUAT ALGORITMA HARUS MENGETAHUINYA SENDIRI TIDAK MENGETAHUI RUMUS TIDAK DAPAT MEMBUAT ALGORITMA
Draf KONSEP penyelesaian Alas Tinggi 7 5 Luas = Alas * Tinggi / 2 17. 5 Luas
Algoritma yang ditulis dalam suatu Bahasa Pemrograman disebut PROGRAM
C Cara-1 #include <stdio. h> void main() { int A, T, L; A = 7; T = 5; L = A * T / 2; Program Flowchart START A=7 T=5 L=A*T/2 printf(“%i”, L ); printf } L END int int 7 5 ? A T L Bagaimana bila menggunakan tipe data : integer
C Cara-1 #include <stdio. h> void main() { int A, T, L; A = 7; T = 5; L = A * T / 2; Program Flowchart START A=7 T=5 L=A*T/2 printf(“%i”, L ); printf } Tercetak : ? int int 7 5 ? A T L END L
C Cara-1 #include <stdio. h> void main() { int A, T, L; A = 7; T = 5; L = A * T / 2; Program Flowchart START A=7 T=5 L=A*T/2 printf(“%i”, L ); printf } Tercetak : 17 int int 7 5 17 A T L END L
Mengapa tercetak : 17 ? Seharusnya tercetak 17. 5 Karena (7*5)/2 = 17. 5
Karena variabel L tipenya int Tipe int hanya menyimpan nilai integer int 17, 5 17 L
Tipe data yang dapat menampung nilai pecahan : atau
Tipe Data. Tipe data dasar (primitif) yang digunakan oleh Bahasa C. Sebutan Tipe Data 1. Character Bentuk penulisan dalam Bahasa C char atau signed char Jumlah Byte yang diperlukan 1 Jangkauan nilai numerik -128 s. d. 127 unsigned char 1 0 s. d. 255 int atau signed 2 -32768 s. d. 32767 unsigned int atau unsigned 2 long atau long int atau signed long int 4 unsigned long atau unsigned long int 4 0 3. Floating point (single precision) float 4 3. 4 E-38 s. d. 3. 4 E 38 4. Double precision double 8 long double 10 2. Integer 0 s. d. 65535 -2147483648 s. d. 2147483647 s. d. 4294967295 positip atau negatip 1. 7 E-308 s. d. 1. 7 E 308 positip atau negatip 3. 4 E-4932 s. d 1. 1 E 4932 positip atau negatip
Kita coba pilih :
C Program Flowchart #include <stdio. h> void main() { int A, T; float L; A = 7; T = 5; L = A * T / 2; printf(“%f”, L ); START A=7 T=5 L=A*T/2 printf END } Tercetak : 17. 00000 int float 7 5 17 A T L L
Perhatikan : printf(“%f”, L); format untuk data bertipe float
Perhatikan : Tercetak : 17. 000000 Dengan format standar, ( %f ) , nilai bertipe float akan dicetak dengan 6 angka dibelakang titik decimal
Mengapa masih tercetak : 17. 000000 ? Padahal data ( L ) bertipe float, Seharusnya tercetak : 17. 500000
Perhatikan : L = A * T / 2; int int Ketiga-tiganya bertipe int Sehingga hasil perhitungan ini nilainya disimpan dalam bentuk int Nilai dalam bentuk integer ini yang disimpan ke L 17, bukan 17. 5
Perhatikan : L = A * T / 2; Salah satu bertipe float, maka hasil perhitungan disimpan dalam bentuk float
ganti L = A * T / 2. 0 ; bentuk floating point double precision
C Program Flowchart #include <stdio. h> void main() { int A, T; float L; A = 7; T = 5; L = A * T / 2. 0; printf(“%f”, L ); START A=7 T=5 L=A*T/2 printf L END } Tercetak : ? int float 7 5 ? A T L Perhatikan : Untuk contoh ini, Algoritmanya sendiri, seperti terlihat dalam Flowchart, tidak terpengaruh oleh tipe data
Program Flowchart #include <stdio. h> void main() { int A, T; float L; A = 7; T = 5; L = A * T / 2. 0; printf(“%f”, L ); START A=7 T=5 L=A*T/2 printf END } Tercetak : 17. 50000 int float 7 5 17. 5 A T L L
Perhatikan : Tercetak : 17. 500000 ganti printf(“%f”, L ); menjadi : printf(“%5. 2 f”, L );
dengan printf(“%5. 2 f”, L ); Tercetak : 17. 50 Dua angka dibelakang titik decimal
dengan printf(“%8. 2 f”, L ); Tercetak : 17. 50 Dua angka dibelakang titik decimal ada 3 spasi
Program Flowchart #include <stdio. h> void main() { int A, T; float L; A = 7; T = 5; L = A * T / 2. 0; printf(“%f”, L ); START A=7 T=5 L=A*T/2 printf END } Tercetak : 17. 50000 int float 7 5 17. 5 A T L L
Program Flowchart #include <stdio. h> void main() { int A, T; float L; A = 7; T = 5; L = A * T / 2. 0; printf(“%5. 2 f”, L ); START A=7 T=5 L=A*T/2 printf END } Tercetak : 17. 50 int float 7 5 17. 5 A T L L
Untuk contoh ini, Lebih aman bila semua variabel bertipe float
Program Flowchart #include <stdio. h> void main() { float A, T, L; A = 7; atau A = 7. 0; T = 5; atau T = 5. 0; L = A * T / 2. 0; printf(“%f”, L ); START A=7 T=5 L=A*T/2 printf } L END Tercetak : 17. 50000 float 7. 0 5. 0 17. 5 A T L Perhatikan : Untuk contoh ini, Algoritmanya sendiri, seperti terlihat dalam Flowchart, tidak terpengaruh oleh tipe data
#include <stdio. h> void main() { float A, T, L; A = 7; atau A = 7. 0; T = 5; atau T = 5. 0; L = A * T / 2; printf(“%f”, L ); } Tercetak : 17. 50000 float 7. 0 5. 0 17. 5 A T L Bukan 2. 0 Tapi Mengapa mau tercetak 17. 500000
Dengan C++
C++ #include <iostream. h> void main() { int A, T; float L; A = 7; T = 5; L = A * T / 2. 0; Program Flowchart START A=7 T=5 L=A*T/2 cout << L ; END } Tercetak : 17. 5 int 7 5 A T int 17. 5 L L
C++ #include <iostream. h> void main() { float A, T, L; A = 7; T = 5; L = A * T / 2. 0; Program Flowchart START A=7 T=5 L=A*T/2 cout << L ; cout } Tercetak : 17. 5 float 7. 0 5. 0 17. 5 A T L END L
C #include <stdio. h> void main() { float A, T, L; A = 7; T = 5; C++ #include <iostream. h> void main() { float A, T, L; A = 7; T = 5; L = A * T / 2. 0; printf(“%f”, L ); cout << L ; } Tercetak : 17. 500000 } Tercetak : 17. 5
Soal Tugas Kelas 2. 2 Susun algoritma yang ditulis dalam Bahasa C++, untuk menginput alas dan tinggi sebuah segitiga, kemudian mencetak luas segitiga tersebut. 7 5 cin 7 5 ? A T L A untuk Alas T untuk Tinggi, dan L untuk Luas cout ?
Soal Tugas Kelas 2. 2 Susun algoritma yang ditulis dalam Bahasa C++, untuk menginput alas dan tinggi sebuah segitiga, kemudian mencetak luas segitiga tersebut. 7 5 cin 7 5 A T 17. 5 L A untuk Alas T untuk Tinggi, dan L untuk Luas cout 17. 5
C Cara-1 #include <stdio. h> void main() { float A, T, L; scanf(“%f”, &A); scanf(“%f”, & T); L = A * T / 2; printf(“%f”, L ); } Program Flowchart START scanf A scanf T L=A*T/2 printf END Dua instruksi ini dapat digabung menjadi satu instruksi : Scanf(“%i %i”, &A, &B ); scanf A, T L
C Cara-1 #include <stdio. h> void main() { int A, T, L; scanf(“%i”, &A); scanf(“%i”, & T); L = A * T / 2; printf(“%i”, L ); } Program Flowchart START scanf A scanf T L=A*T/2 printf END Dua instruksi ini dapat digabung menjadi satu instruksi : Scanf(“%i %i”, &A, &B ); scanf A, T L
C++ Cara-1 #include <iostream. h> void main() { float A, T, L; cin >> A; cin >> T; L = A * T / 2; cout << L; Program Flowchart START cin A cin T L=A*T/2 cout } END Dua instruksi ini dapat digabung menjadi satu instruksi : cin >> A >> T; cin A, T L
C++ Cara-1 #include <iostream. h> void main() { float A, T, L; cin >> A; cin >> T; 7 5 17. 5 L = A * T / 2; cout << L; } Karena ada kemungkinan mengandung nilai pecahan, maka digunakan tipe data : float Floating point Single Precission Menulis program, memerlukan pengtahuan mengenai : BAHASA Pemograman yang digunakan
Cara-1 C++ #include <iostream. h> void main() { float A, T, L; cin >> A; cin >> T; 12 6 30 L = A * T / 2; cout << L; } Walaupun tipe data : float Tapi tercetak bukan : 30. 0
#include <iostream. h> void main() { float A, T, L; cout << " Alas : " ; cin >> A; cout << " Tinggi : " ; cin >> T; L = A * T / 2; cout << " Luas : " << L; } Atau : #include <iostream. h> void main() { float A, T, L; cout << " Alas : " ; cin >> A; cout << " Tinggi : " ; cin >> T; L = A * T / 2; cout << " Luas : " << L; } Alas : 7 Tinggi : 5 Luas : 17. 5
Bersambung ke : Soal Tugas Kelas 2. 3
- Slides: 74