Iterasi (Bag 2)

47
1 Iterasi (Bag 2)

description

Iterasi (Bag 2). Topik. Loop tak berhingga while dan for Macro Input dr file Contoh-contoh HitungKonvok Faktor. Loop tak berhingga. while ( 1 ) { ...etc...etc...etc... }. for ( ; 1 ; ) { ...etc...etc...etc... }. for ( ; ; ) { ...etc...etc...etc... }. - PowerPoint PPT Presentation

Transcript of Iterasi (Bag 2)

Page 1: Iterasi (Bag 2)

1

Iterasi (Bag 2)

Page 2: Iterasi (Bag 2)

2

Topik

• Loop tak berhingga• while dan for• Macro

• Input dr file

• Contoh-contoh

– HitungKonvok

– Faktor

Page 3: Iterasi (Bag 2)

3

Loop tak berhingga

while ( 1 ) { ...etc...etc...etc... }

for ( ; 1 ; ) { ...etc...etc...etc... }

for ( ; ; ) { ...etc...etc...etc... }

Page 4: Iterasi (Bag 2)

4

Loop tak berhingga

while ( 1 ) { ...etc...etc...etc... }

for ( ; 1 ; ) { ...etc...etc...etc... }

for ( ; ; ) { ...etc...etc...etc... }

Gunakan :

if ( condition ) { break; }

statement utk keluar loop

Page 5: Iterasi (Bag 2)

5

while (1) { printf(“Masukan batas (low high): "); scanf("%d %d", &low, &high);

if ((low >= 0) && (high <= 127) && (low < high)) { break; } else { printf(“Batas jelek. Coba lagi.\n"); } }

Contoh: asciiCheck.c

Page 6: Iterasi (Bag 2)

6

while (1) { printf("Masukan batas (low high): "); scanf("%d %d", &low, &high);

if ((low >= 0) && (high <= 127) && (low < high)) { break; } else { printf("Batas jelek. Coba lagi.\n"); } }

Contoh: asciiCheck.c

Page 7: Iterasi (Bag 2)

7

while dan for

• for loop dapat ditulis sebagai while loop, dan sebaliknya.

• Statement continue dlm for loop mengirimkan kontrol ke ekspresi yang di “update”.

Page 8: Iterasi (Bag 2)

8

Contoh: asciiPrintCetak tabel ASCII

Untuk tiap character dari batas bawah hingga batas atas{ print niai tabel ascii dan karakter ascii }

for ( ch = low; ch <= high; ch++ ) { printf("%d: %c\n", ch, ch); } asciiPrint1.c

ch = low; while ( ch <= high ) { printf("%d: %c\n", ch, ch); ch++; } asciiPrint2.c

Page 9: Iterasi (Bag 2)

9

for ( ch = low; ch <= high; ch++ ) { printf("%d: %c\n", ch, ch); } ch = low; while (1) { printf("%d: %c\n", ch, ch); if (ch < high) { ch++; continue; } else { break; } } asciiPrint3.c

asciiPrint1.c

Contoh: asciiPrint (cont)

Page 10: Iterasi (Bag 2)

10

for ( ch = low; ch <= high; ch++ ) { printf("%d: %c\n", ch, ch); }

ch = low; for (;;) { printf("%d: %c\n", ch, ch); ch++; if (ch > high) { break; } }

asciiPrint4.c

Contoh: asciiPrint (cont)

asciiPrint1.c

Page 11: Iterasi (Bag 2)

11

while (1) { printf("Masukan batas (low high): "); scanf("%d %d", &low, &high);

if ((low >= MIN) && (high <= MAX) && (low < high)) { break; } else { printf("Batas jelek. Coba lagi.\

n"); } }

for (ch=low; ch <= high; ch++) { printf("%d: %c\n", ch, ch); }

return 0;}

Contoh: ascii1.c

#include <stdio.h>

/*Cetak bagian tabel ASCII */

#define MIN 0#define MAX 127

int main(){ int low, high; char ch;

Page 12: Iterasi (Bag 2)

12

while (1) { printf("Masukan batas (low high): "); scanf("%d %d", &low, &high);

if ((low >= MIN) && (high <= MAX) && (low < high)) { break; } else { printf("Batas jelek. Coba lagi.\

n"); } }

for (ch=low; ch <= high; ch++) { printf("%d: %c\n", ch, ch); }

return 0;}

#include <stdio.h>

/* Cetak bagian tabel ASCII */

#define MIN 0#define MAX 127

int main(){ int low, high; char ch;

Contoh: ascii1.c (lanj)

Page 13: Iterasi (Bag 2)

13

while (1) { printf("Masukan batas (low high): "); scanf("%d %d", &low, &high);

if ((low >= MIN) && (high <= MAX) && (low < high)) { break; } else { printf("Batas jelek. Coba lagi.\

n"); } }

for (ch=low; ch <= high; ch++) { printf("%d: %c\n", ch, ch); }

return 0;}

#include <stdio.h>

/* Cetak bagian tabel ASCII

the ASCII table */

#define MIN 0#define MAX 127

int main(){ int low, high; char ch;

Definisi Macro :

#define identifier tokensSemua subsequent dari identifier (MIN,MAX) diganti dengan token ini (0,127)

Contoh: ascii1.c (cont)

Page 14: Iterasi (Bag 2)

14

Contoh 1: HitungKonvok

• Menghitung jumlah konsonan dan vokal dalam suatu file.

• Yang bukan alfabet tidak dihitung

Page 15: Iterasi (Bag 2)

15

Buka file sbg inputset Hitkons ke 0set HitVok ke 0loop{ input ch if (end of file) { exit loop }

if (ch adl vokal) { increment Hitvok } else if (ch adl kons) { increment HItkons }}close fileoutput Hitkons, HItvok

Algorithm

Page 16: Iterasi (Bag 2)

16

Buka file sbg inputset Hitkons ke 0set HitVok ke 0loop{ input ch if (end of file) { exit loop }

if (ch adl vokal) { increment Hitvok } else if (ch adl kons) { increment HItkons }}close fileoutput Hitkons, HItvok

Algorithm (lanj)

Page 17: Iterasi (Bag 2)

17

Buka file sbg inputset Hitkons ke 0set HitVok ke 0loop{ input ch if (end of file) { exit loop }

if (ch adl vokal) { increment Hitvok } else if (ch adl kons) { increment HItkons }}close fileoutput Hitkons, HItvok

Algorithm (lanj)

Page 18: Iterasi (Bag 2)

18

Buka file sbg inputset Hitkons ke 0set HitVok ke 0loop{ input ch if (end of file) { exit loop }

if (ch adl vokal) { increment Hitvok } else if (ch adl kons) { increment HItkons }}close fileoutput Hitkons, HItvok

Algorithm (lanj)

Page 19: Iterasi (Bag 2)

19

Buka file sbg inputset Hitkons ke 0set HitVok ke 0loop{ input ch if (end of file) { exit loop }

if (ch adl vokal) { increment Hitvok } else if (ch adl kons) { increment HItkons }}close fileoutput Hitkons, HItvok

Algorithm (lanj)

Page 20: Iterasi (Bag 2)

20

Buka file sbg inputset Hitkons ke 0set HitVok ke 0loop{ input ch if (end of file) { exit loop }

if (ch adl vokal) { increment Hitvok } else if (ch adl kons) { increment HItkons }}close fileoutput Hitkons, HItvok

Algorithm (lanj)

Page 21: Iterasi (Bag 2)

21

Buka file sbg inputset Hitkons ke 0set HitVok ke 0loop{ input ch if (end of file) { exit loop }

if (ch adl vokal) { increment Hitvok } else if (ch adl kons) { increment HItkons }}close fileoutput Hitkons, HItvok

Baca input dr file?

Algorithm (lanj)

Page 22: Iterasi (Bag 2)

22

Buka file sbg inputset Hitkons ke 0set HitVok ke 0loop{ input ch if (end of file) { exit loop }

if (ch adl vokal) { increment Hitvok } else if (ch adl kons) { increment HItkons }}close fileoutput Hitkons, HItvok

Pertama, implement asikan dengan input dr stream stdin.

Sekali berjalan, modifikasi utk

mengambil input dari file.

Algorithm (lanj)

Page 23: Iterasi (Bag 2)

23

#include <stdio.h>

int main(){ int Hitkons, Hitvok; char ch ;

Hitkons = 0 ; Hitvok = 0 ;

printf("\nInput ada %d konsonan dan%d vokal.\n", Hitkons, Hitvok) ;

return 0;}

Program

Page 24: Iterasi (Bag 2)

24

Hitkons = 0 ; Hitvok = 0 ; /* tiap character dlm file, di test apakah sebuah konsonan atau

vokal, dan sesuaikan dg jumlah total */

while ( scanf("%c", &ch) != EOF ) {

}

printf("\nInput ada %d konsonan dan %d vokal.\n", Hitkons, Hitvok) ;

Program

Page 25: Iterasi (Bag 2)

25

/* tiap character dlm file, di test apakah sebuah konsonan atau vokal, dan sesuaikan dg jumlah total */ while ( scanf("%c", &ch) != EOF ) { if (ch == 'a' || ch == 'A' || ch == 'e' || ch == 'E' || ch == 'i' || ch == 'I' || ch == 'o' || ch == 'O' || ch == 'u' || ch == 'U') { /* Vowel */ Hitvok++ ; } else if ((ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z')) { /* Konsonan, krn vokal sudah dihitung */ Hitkons++ ; } }

Program

Page 26: Iterasi (Bag 2)

26

#include <stdio.h>

/* hitung jml vokal dan konsonan dalm input file. */

int main(){ int Hitkons, Hitvok ; char ch ;

Hitkons = 0 ; Hitvok = 0 ;

/* tiap character dlm file, di test apakah sebuah konsonan atau vokal, dan sesuaikan dg jumlah total */

while ( scanf("%c", &ch) != EOF ) { if (ch == 'a' || ch == 'A' || ch == 'e' || ch == 'E' || ch == 'i' || ch == 'I' || ch == 'o' || ch == 'O' || ch == 'u' || ch == 'U') { /* Vokal. */ Hitvok++ ; } else if ( (ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z') ) { /* Konsonan. */ Hitkons++ ; } }

printf("\nInput ada %d konsonan dan %d vokal.\n", Hitkons, Hitvok) ;

return 0;}

vowel1.c

Modifikasi utk menambil input dari

suatu file ?

Page 27: Iterasi (Bag 2)

27

#include <stdio.h>

int main(){ int Hitkons, Hitvok ; char ch ;

Hitkons = 0 ; Hitvok = 0 ;

printf("\nFile ada %d konsonan dan %d vokal.\n", Hitkons, Hitvok) ;

return 0;}

while ( scanf("%c", &ch) != EOF ){

}

...etc...etc...etc...

Page 28: Iterasi (Bag 2)

28

Input file stream (“file pointer”)

#include <stdio.h>

int main(){ FILE *inputFile ; int Hitkons, Hitvok ; char ch ;

Hitkons = 0 ; Hitvok = 0 ;

inputFile = fopen("yourFile.txt", "r") ;

printf("\nFile ada %d konsonan dan %d vokal.\n", Hitkons, Hitvok) ;

fclose(inputFile) ; return 0;}

while ( fscanf(inputFile, "%c", &ch) != EOF ){

}

...etc...etc...etc...

Page 29: Iterasi (Bag 2)

29

#include <stdio.h>

int main(){ FILE *inputFile ; int Hitkons, Hitvok ; char ch ;

Hitkons = 0 ; Hitvok = 0 ;

inputFile = fopen(“fileanda.txt", "r") ;

printf("\nFile has %d konsonan dan %d vokal.\n", Hitkons, Hitvok) ;

fclose(inputFile) ; return 0;}

while ( fscanf(inputFile, "%c", &ch) != EOF ){

}

...etc...etc...etc...

Deklarasi file pointer

Buka file utk input

Baca input dr file

Tutup file

Page 30: Iterasi (Bag 2)

30

#include <stdio.h>/* Hitung jml vokal dan konsonan dalam suatu file. */

int main(){ FILE *inputFile ; int Hitkons, Hitvok ; char ch ;

inputFile = fopen(“fileanda.txt", "r") ;

Hitkons = 0 ; Hitvok = 0 ;

/* tiap character dlm file, di test apakah sebuah konsonan atau vokal, dan sesuaikan dg jumlah total */

while ( fscanf(inputFile, "%c", &ch) != EOF ) { if (ch == 'a' || ch == 'A' || ch == 'e' || ch == 'E' || ch == 'i' || ch == 'I' || ch == 'o' || ch == 'O' || ch == 'u' || ch == 'U') { /* Vokal. */ Hitvok++ ; } else if ( (ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z') ) { /* Konsonan. */ Hitkons++ ; } }

printf("\nFile ada %d konsonan dan %d vokal.\n", Hitkons, Hitvok) ;

fclose(inputFile) ;

return 0;}

vowel2.c

Lebih jauh dg file input/output dlm

kuliah selanjutnya

Page 31: Iterasi (Bag 2)

31

Contoh 2: Faktorisasi

• Tulis program utk mencetak faktorisasi bilangan prima (bil 2 sbg bil prima pertama )

• Contoh,

pd input 6, outputnya adalah: 2 3

" " 24, " " : 2 2 2 3

" " 14, " " : 2 7

" " 23, " " : 23 (23 adl prima)

Page 32: Iterasi (Bag 2)

32

input n

set factor to 2

Algorithm

Page 33: Iterasi (Bag 2)

33

input n

set factor to 2

while(factor sudah di uji){

}

Algorithm (lanj)

Page 34: Iterasi (Bag 2)

34

input n

set factor to 2

while(factor sudah di uji){ if (n dpt di bagi oleh faktor) { output factor set n ke n / factor }

}

Algorithm (lanj)

Page 35: Iterasi (Bag 2)

35

input n

set factor to 2

while(factor sudah di uji){ if (n dpt di bagi oleh faktor) { output factor set n to n / factor } else { increment factor }}

Algorithm (lanj)

Page 36: Iterasi (Bag 2)

36

input n

set factor to 2

while(factor sudah di uji){ if (n dpt di bagi oleh faktor) { output factor set n to n / factor } else { increment factor }}

while(factor sudah di uji){ if (n dpt di bagi oleh faktor) { output factor set n to n / factor }

increment factor}

Algorithm (lanj)

Kenap tidak?

Page 37: Iterasi (Bag 2)

37

#include <stdio.h>

/* Cetak faktor bilangan prima */

int main(){ int n, factor ;

return 0;}

Program

Page 38: Iterasi (Bag 2)

38

#include <stdio.h>

/* Cetak faktor bilangan prima */

int main(){ int n, factor ;

printf("\nMasukan integer: ") ; scanf("%d", &n) ;

return 0;}

Program (lanj)

Page 39: Iterasi (Bag 2)

39

#include <stdio.h>

/* Cetak faktor bilangan prima */

int main(){ int n, factor ;

printf("\nMasukan integer: ") ; scanf("%d", &n) ;

printf("\nFaktor Prima dari %d adalah: ", n) ;

/* Coba tiap kemungkinan faktor */

printf("\n\n"); return 0;}

Program (cont)

Page 40: Iterasi (Bag 2)

40

/* Coba tiap kemungkinan faktor */

factor = 2; while ( factor <= n && n > 1 ) {

}

Page 41: Iterasi (Bag 2)

41

/* Coba tiap kemungkinan faktor */

factor = 2; while ( factor <= n && n > 1 ) { if (n % factor == 0) { /* n adlh banyak faktor, ** Jd cetak faktor dan bagi n dg faktor */

printf(" %d", factor) ; n = n / factor ; }

}

Page 42: Iterasi (Bag 2)

42

/* Coba tiap kemungkinan faktor */

factor = 2; while ( factor <= n && n > 1 ) { if (n % factor == 0) { /* n adlh banyak faktor, ** Jd cetak faktor dan bagi n dg faktor */

printf(" %d", factor) ; n = n / factor ; } else { /* n bukan faktor yg banyak; ** cari kemungkinan faktor selanjutnya */

factor++ ; } }

Page 43: Iterasi (Bag 2)

43

/* Coba tiap kemungkinan faktor */

factor = 2; while ( factor <= n && n > 1 ) { if (n % factor == 0) { /* n adlh banyak faktor, ** Jd cetak faktor dan bagi n dg faktor */

printf(" %d", factor) ; n = n / factor ; } else { /* n bukan faktor yg banyak; ** cari kemungkinan faktor selanjutnya */

factor++ ; } }

Page 44: Iterasi (Bag 2)

44

#include <stdio.h>

/* Cetak faktor bilangan prima */

int main(){ int n, factor ;

printf("\nMasukan integer: ") ; scanf("%d", &n) ;

printf("\nFaktor Prima dari %d adalah: ", n) ;

/* Coba tiap kemungkinan faktor */

factor = 2 while ( factor <= n && n > 1 ) { if (n % factor == 0) { /* n adlh banyak faktor, ** Jd cetak faktor dan bagi n dg faktor. */

printf(" %d", factor) ; n = n / factor ; } else { /* n bukan faktor yg banyak; ** cari kemungkinan faktor selanjutnya */

factor++ ; } } printf("\n\n"); return 0;}

factor1.c

Page 45: Iterasi (Bag 2)

45

/* Coba tiap kemungkinan faktor */

factor = 2; while ( factor <= n && n > 1 ) { if (n % factor == 0) { /* n adlh banyak faktor, ** Jd cetak faktor dan bagi n dg faktor */

printf(" %d", factor) ; n = n / factor ; } else { /* n bukan faktor yg banyak; ** cari kemungkinan faktor selanjutnya */

factor++ ; } }

Rubah dari while-loop ke for-loop?

Page 46: Iterasi (Bag 2)

46

/* Coba tiap kemungkinan faktor */

for ( factor = 2; factor <= n && n > 1 ; ) { if (n % factor == 0) { /* n adlh banyak faktor, ** Jd cetak faktor dan bagi n dg faktor */

printf(" %d", factor) ; n = n / factor ; } else { /* n bukan faktor yg banyak; ** cari kemungkinan faktor selanjutnya */

factor++ ; } }

Page 47: Iterasi (Bag 2)

47

#include <stdio.h>

/* Cetak faktor bilangan prima. */

int main(){ int n, factor ;

printf("\nMasukan integer: ") ; scanf("%d", &n) ;

printf("\nFaktor Prima dari %d adalah: ", n) ;

/* Coba tiap kemungkinan faktor. */

for ( factor = 2; factor <= n && n > 1 ; ) { if (n % factor == 0) { /* n adlh banyak faktor, ** Jd cetak faktor dan bagi n dg faktor. */

printf(" %d", factor) ; n = n / factor ; } else { /* n bukan faktor yg banyak; ** cari kemungkinan faktor selanjutnya. */

factor++ ; } } printf("\n\n"); return 0;}

factor2.c