Struktur Kontrol Pada C Struktur penyeleksian :

Download Report

Transcript Struktur Kontrol Pada C Struktur penyeleksian :

Struktur Kontrol Pada C
Struktur penyeleksian :
• Seringkali instruksi - instruksi dilaksanakan bila suatu
persyaratan dipenuhi, dalam struktur penyeleksian,
suatu instruksi atau sekelompok instruksi dapat dilewati,
sementara instruksi lain dijalankan.
Konstruksi if
Sintaks :
if (ekspresi boolean) statement;
Atau
If (ekspresi boolean){
statement1;
Blok statement
statement2;
}
• Jika ekspresi boolean menghasilkan nilai TRUE, maka
statement atau blok statement akan dilaksanakan.
Konstruksi if-else
Sintaks :
if (ekspresi boolean) statement1;
else statement2;
Atau
if (ekspresi boolean){
statement1;
statement2; Blok statement1
}
else
{ statement3;
statement4; Blok statement2
}
• Jika ekspresi boolean menghasilkan nilai TRUE, maka
statement1 dan statement2 atau blok statement1 yang
akan dilaksanakan, jika tidak (FALSE) maka statement3
dan statement4 atau blok statement2 yang akan
dilaksanakan.
• Contoh Program untuk mendapatkan akar-akar dari
persamaan kwardrat.
Algoritma :
1. Dapatkan koefisien a, b, dan c dari keyboard
2. Hitung diskriminan d = b2 – 4*a*c
3. Bila d >= 0 maka hitung x1 dan x2
Bila d < 0 maka stop
4. Stop
Dapatkan x1, dengan rumus :
-b + d
2.a
Dapatkan x2, dengan rumus :
-b - d
2.a
/*-----------------------------Program Pers_Kwadrat
------------------------------*/
#include <stdio.h>
#include <math.h>
float a,b,c,d,x1,x2;
main()
{
/* Memasukkan data koef. a,
printf(“Masukan koef. a : “);
printf(“Masukan koef. b : “);
printf(”Masukan koef. c : ”);
b, dan c */
scanf(“%f”,&a);
scanf(“%f”,&b);
scanf(“%f”,&c);
/* Menghitung Diskriminant */
d = b*b - 4 * a * c;
/* Menghitung x1 dan x2 serta
Menampilkan hasil */
if (d >= 0){
x1 = (-b + sqrt(d)) / (2 * a);
x2 = (-b - sqrt(d)) / (2 * a);
printf(“x1=%f\n x2=%f\n”,x1,x2);
}
else {
printf(”Akar Persamaan Imajiner”);
}
}
Konstruksi if-else dapat digunakan secara bertingkat
(nested)
Contoh:
if (ekspresi boolean1) statement1;
else if (ekspresi boolean2) statement2;
else if (ekspresi boolean3) statement3;
.....
else if (ekspresi booleanN) statementN;
Perbedaan Alur logika if-else dengan if
Alur Logika
if - else
Statement_1
IF
True?
THEN Ya
Statement_A
Statement_2
Alur Logika if
Tidak
ELSE
Statement_B
IF
Statement_1
True?
THEN Ya
Statement_A
Statement_2
Tidak
Konstruksi switch -case
Konstruksi ini digunakan sebagai pengganti konstruksi
if-else, bila konstruksi if-else bertingkat terlalu jauh,
sehingga menjadi sulit dibaca.
Sintaks konstruksi switch-case :
switch (ekspresi)
{
case constant_1 :
statements_1; break;
case constant_2 :
statements_2; break;
…
case constant_N :
statements_N; break;
default :
statements;
}
Contoh Program Menghitung Nilai Ujian :
Tabel Nilai
Nilai Akhir
Bobot
Nilai Huruf
85 – 100
4
A : Sangat Baik
75 – 84
3
B : Baik
65 – 74
2
C : Cukup
50 – 64
1
D : Kurang
0 - 49
0
E : Gagal
Mata kuliah Algoritma dan Pemrograman dilengkapi dengan praktikum
di Lab. Software, maka nilai akhir dihitung dari :
Nilai Teori = 50%(Ujian Semester) + 30%(Ujian Mid Semester) +
10%(Tugas Mandiri Teori) + 10%(Absen Teori);
Nilai Praktikum = 40%(Ujian Praktikum) + 30%(Kuis Praktikum) +
15%(TM Praktikum) + 15%(Abs Praktikum);
Nilai Akhir = (NilaiTeori + NilaiPraktikum)/2;
/*------------------------Program Nilai_Ujian
-------------------------*/
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int AbsensiT, AbsensiP;
int TugasT, TugasP;
int Mid, Kuis, Nilai_akhir;
int FinalT, FinalP;
float NilaiT, NilaiP;
char Jawab;
main()
{
clrscr();
printf(”Teruskan [Y/T] ? ”);
scanf(“%c”,&Jawab);
while (toupper(Jawab) == ’Y’){
printf(”Kehadiran Teori (0 -100) : ”);
scanf(“%d”,&AbsensiT);
printf(”Kehadiran Praktikum (0 -100) : ”);
scanf(“%d”,&AbsensiP);
printf(”Tugas Mandiri Teori (0 -100) : ”);
scanf(“%d”,&TugasT);
printf(”Tugas Mandiri Praktikum (0 -100) : ”);
scanf(“%d”,&TugasP);
printf(”Mid Semester Teori (0 -100) : ”);
scanf(”%d”,&Mid);
printf(”Mid Semester Praktikum (0 -100) : ”);
scanf(”%d”,&Kuis);
printf(“Nilai Semester Teori (0 -100) : “);
scanf(“%d”,&FinalT);
printf(“Nilai Semester Praktikum (0 -100) : “);
scanf(“%d”,&FinalP);
NilaiT = (0.1*AbsensiT)+(0.1*TugasT)+
(0.3*Mid)+ 0.5*FinalT);
NilaiP = 0.15*AbsensiP + 0.15*TugasT +
0.3*Kuis + 0.5*FinalP;
Nilai_akhir = ceil((NilaiT + NilaiP)/2);
if(Nilai_akhir >=85)
printf(“Nilai_akhir = A”);
else if(Nilai_akhir >=75)
printf(“Nilai_akhir= B”);
else if(Nilai_akhir >=65)
printf(“Nilai_akhir = C”);
else if(Nilai_akhir >=50)
printf(“Nilai_akhir = D”);
else
printf(“Nilai_akhir = E”);
printf(“\n”);
printf(“Teruskan [Y/T] ? “);
scanf(“%c”,&Jawab);
}
}