1 / 47

Iterasi (Bag 2)

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... }.

storm
Download Presentation

Iterasi (Bag 2)

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Iterasi (Bag 2)

  2. Topik • Loop tak berhingga • while dan for • Macro • Input dr file • Contoh-contoh • HitungKonvok • Faktor

  3. Loop tak berhingga while ( 1 ) { ...etc...etc...etc... } for ( ; 1 ; ) { ...etc...etc...etc... } for ( ; ; ) { ...etc...etc...etc... }

  4. Loop tak berhingga while ( 1 ) { ...etc...etc...etc... } Gunakan : if ( condition ) { break; } statement utk keluar loop for ( ; 1 ; ) { ...etc...etc...etc... } for ( ; ; ) { ...etc...etc...etc... }

  5. Contoh:asciiCheck.c 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"); } }

  6. Contoh:asciiCheck.c 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"); } }

  7. while dan for • for loop dapat ditulis sebagai while loop, dan sebaliknya. • Statement continue dlm forloop mengirimkan kontrol ke ekspresi yang di “update”.

  8. Contoh: asciiPrint Cetak 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

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

  10. Contoh: asciiPrint (cont) for ( ch = low; ch <= high; ch++ ) { printf("%d: %c\n", ch, ch); } asciiPrint1.c ch = low; for (;;) { printf("%d: %c\n", ch, ch); ch++; if (ch > high) { break; } } asciiPrint4.c

  11. Contoh: ascii1.c 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;

  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; } Contoh: ascii1.c (lanj) #include <stdio.h> /* Cetak bagian tabel ASCII */ #define MIN 0 #define MAX 127 int main() { int low, high; char ch;

  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; } Contoh: ascii1.c (cont) #include <stdio.h> /* Cetak bagian tabel ASCII the ASCII table */ #define MIN0 #define MAX127 int main() { int low, high; char ch; Definisi Macro : #define identifier tokens Semua subsequent dariidentifier (MIN,MAX) diganti dengan token ini (0,127)

  14. Contoh 1: HitungKonvok • Menghitung jumlah konsonan dan vokal dalam suatu file. • Yang bukan alfabet tidak dihitung

  15. Algorithm Buka file sbg input set Hitkons ke 0 set HitVok ke 0 loop { input ch if (end of file) { exit loop } if (ch adl vokal) { increment Hitvok } else if (ch adl kons) { increment HItkons } } close file output Hitkons, HItvok

  16. Algorithm (lanj) Buka file sbg input set Hitkonske 0 set HitVokke 0 loop { input ch if (end of file) { exit loop } if (chadlvokal) { increment Hitvok } else if (chadlkons) { increment HItkons } } close file output Hitkons, HItvok

  17. Algorithm (lanj) Buka file sbg input set Hitkonske 0 set HitVokke 0 loop { input ch if (end of file) { exit loop } if (chadlvokal) { increment Hitvok } else if (chadlkons) { increment HItkons } } close file output Hitkons, HItvok

  18. Algorithm (lanj) Buka file sbg input set Hitkonske 0 set HitVokke 0 loop { input ch if (end of file) { exit loop } if (chadlvokal) { increment Hitvok } else if (chadlkons) { increment HItkons } } close file output Hitkons, HItvok

  19. Algorithm (lanj) Buka file sbg input set Hitkonske 0 set HitVokke 0 loop { input ch if (end of file) { exit loop } if (chadlvokal) { increment Hitvok } else if (chadlkons) { increment HItkons } } close file output Hitkons, HItvok

  20. Algorithm (lanj) Buka file sbg input set Hitkonske 0 set HitVokke 0 loop { input ch if (end of file) { exit loop } if (chadlvokal) { increment Hitvok } else if (chadlkons) { increment HItkons } } close file output Hitkons, HItvok

  21. Baca input dr file? Algorithm (lanj) Buka file sbg input set Hitkonske 0 set HitVokke 0 loop { input ch if (end of file) { exit loop } if (chadlvokal) { increment Hitvok } else if (chadlkons) { increment HItkons } } close file output Hitkons, HItvok

  22. Pertama, implement asikan dengan input dr stream stdin. Sekali berjalan, modifikasi utk mengambil input dari file. Algorithm (lanj) Buka file sbg input set Hitkonske 0 set HitVokke 0 loop { input ch if (end of file) { exit loop } if (chadlvokal) { increment Hitvok } else if (chadlkons) { increment HItkons } } close file output Hitkons, HItvok

  23. Program #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; }

  24. Program 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) ;

  25. Program /* tiap character dlm file, di test apakahsebuahkonsonanatauvokal, dansesuaikan 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, krnvokalsudahdihitung */ Hitkons++ ; } }

  26. Modifikasi utk menambil input dari suatu file ? #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

  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...

  28. #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; } Input file stream (“file pointer”) while ( fscanf(inputFile, "%c", &ch) != EOF ) { } ...etc...etc...etc...

  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; } Deklarasi file pointer Buka file utk input while ( fscanf(inputFile, "%c", &ch) != EOF ) { } ...etc...etc...etc... Baca input dr file Tutup file

  30. Lebih jauh dg file input/output dlm kuliah selanjutnya #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

  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)

  32. Algorithm input n set factor to 2

  33. Algorithm (lanj) input n set factor to 2 while(factor sudah di uji) { }

  34. Algorithm (lanj) 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 } }

  35. Algorithm (lanj) 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 } }

  36. Algorithm (lanj) 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 } } Kenap tidak? while(factor sudah di uji) { if (n dpt di bagi oleh faktor) { output factor set n to n / factor } increment factor }

  37. Program #include <stdio.h> /* Cetak faktor bilangan prima */ int main() { int n, factor ; return 0; }

  38. Program (lanj) #include <stdio.h> /* Cetak faktor bilangan prima */ int main() { int n, factor ; printf("\nMasukan integer: ") ; scanf("%d", &n) ; return 0; }

  39. Program (cont) #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; }

  40. /* Coba tiap kemungkinan faktor */ factor = 2; while ( factor <= n && n > 1 ) { }

  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 ; } }

  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++ ; } }

  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++; } }

  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

  45. Rubah dari while-loop ke for-loop? /* 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++ ; } }

  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++ ; } }

  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

More Related