Penulisan Kondisi Kesamaan Variabel dan LiteralEkspresi

  • Cont oh ekspresi: a , x , a+b , a*b , -x , 5 , a<b , a==b , 7==c
  • Ekspresi dapat melibat kan operat or
    • +b
      • *b
        • -x

  • – Cont oh: a

  Operasi Logika

  Hasil ekspresi logika:

   & & ((x>0) & & (x<3)) 0 < x < 3  | | ((x<0) | | (x>3)) x < 0 at au x > 3 ~ ! ! (x < 0) x t idak lebih kecil dari 0 DEPARTEMEN ILMU KOMPUTER INSTITUT

   != (x != y) x t idak sama dengan y ? > > (x > y) x lebih besar dari y ? < < (x < y) x lebih kecil dari y ?  >= (x >= y) x lebih besar or samadengan y ?  <= (x <= y) x lebih kecil or samadengan y ?

  Operat or LOGIKA Aljabar C Cont oh Art i = == (x == y) x sama dengan y ?

  Penjum lahan + f + 7 Pengurangan - p - c Perkalian * b * m Pem bagian / x / y M odulo % r % s DEPARTEMEN ILMU KOMPUTER INSTITUT PERTANIAN BOGOR

  Operator Arit met ika Operasi Operator Ekspresi C

  Jenis Operator C

  a + b oper at or oper an d

  unt uk menghasilkan suat u nilai DEPARTEMEN ILMU KOMPUTER INSTITUT PERTANIAN BOGOR

  dievaluasi

  ,

  7 ==c

  ==b

  , a

  <=b

  , a

  ,

  , a

  Ekspresi dan Operator

  • Jenis operat or berdasarkan jumlah operand:

  Kuliah #3 Ekspresi, Operat or, dan Condit ional St at em ent

  Algorit me dan Pemrograman

  • – Unary (sat u operand), misal: –a
  • – Binary (dua operand), misal: a+b
  • – Ternary (t iga operand), misal x ? y : z
    • Set iap ekspresi
    • Arit m et ika
    • Logika • Penugasan • Increment , decrement
    • Select ion cont rol condit ional stat ement

  • – if
  • – sw it ch..case DEPARTEMEN ILMU KOMPUTER INSTITUT PERTANIAN BOGOR
  • – TRUE, int bernilai t idak NOL ( 0)
  • – FALSE, int bernilai NOL
    • Tabel kebenaran operasi x & & y
    • Tabel kebenaran operasi x | | y
    • De M organ’s Law

  • – ! (x & & y) == (! x | | ! y)
  • – ! (x | | y) == (! x & & ! y)

  DEPARTEMEN ILMU KOMPUTER Penulisan Kondisi Kesamaan Variabel Lat ihan #1

  #include <stdio.h>

  dan Literal/ Ekspresi

  int main() {

  • int n;

  Disarankan m enggunakan ungkapan scanf("%d", &n); lit eral == variabel if (n = 0) printf("NOL"); ekspresi == variabel else m isalnya printf("TIDAK NOL"); return 0;

  5 == x }

  (a + b) == y

  • Tentukan output jika diberikan input 0.

  agar kesalahan penget ikan “ ==“ m enjadi “ =“ • Tentukan output jika diberikan input 5. t erdet eksi sebagai kesalahan oleh compiler

  • Apa yang dapat disimpulkan dari kasus ini? DEPARTEMEN ILMU KOMPUTER
  • INSTITUT PERTANIAN BOGOR DEPARTEMEN ILMU KOMPUTER INSTITUT PERTANIAN BOGOR

      Evaluasi Ekspresi Logika Operator Penugasan (Assignment )

    • Tanda =
    • Ekspresi (x+5<10 | | y>x+3 & & z-2&g
    • Ada dua bagian yang dipisahkan =
      • – Jika x = 2, y = 4, z = 2; hasil evaluasi:
      • – L-Value : alam at lokasi m em ori t em pat nilai

    • x+5<10 → TRUE disim pan y>x+3 → FALSE
    • – R-Value : nilai yang disim pan

      z-2>3

      → FALSE

    • Cont oh:
      • – (TRUE || FALSE && FALSE)
      • – a >– (TRUE || FALSE)
      • – b = a =
      • – TRUE
      • – c = c + 5; DEPARTEMEN ILMU KOMPUTER INSTITUT PERTANIAN BOGOR

      Contoh Penggunaan Compound Assignment Operator Compound Assignment Operator

    • M enggabungkan operat or penugasan dengan Operator Arti Contoh operat or arit m et ika.
      • = Bilangan +=2  Bilangan = Bilangan+2

      Penjumlahan

    • Cont oh:
      • – -= Pengurangan Nilai -=10  Nilai = Nilai - 10

      c = c + 1 dapat dit ulis c += 1

      

    • – x = x * 2 dapat dit ulis  x * = 2
      • = Perkalian Angka *= 3  Angka = Angka * 3
        • Operat or yang dapat digunakan adalah +, -, * ,

      /= Jumlah /= 5  Jumlah = Jumlah/5 Pembagian

      / , dan %

       Sisa = Sisa % 2 DEPARTEMEN ILMU KOMPUTER INSTITUT %= Sisa hasil bagi Sisa %= 2

    • Increment : ++
    • Decrement : --
    • Ada dua t ipe:
    • Jangan lakukan lebih dari sat u perubahan nilai
      • c
        • d
          • Pre-increment/ decrement , m isalnya

    • – Hasil t idak t erdefinisikan dalan st andar C

    • Cont oh yang melanggar st andar (t akt erdefinisi):
      • Post-increment/ decrement , m isalnya c++ ,

    • Cont oh yang t idak melanggar st andar:
    • Cont oh (m isal nilai aw al a = 5 , b = 8 )
      • – Nilai ekspresi a++ adalah 5, tetapi nilai a setelahnya m enjadi 6
      • – Nilai ekspresi
        • b

    • Program akan memilih sat u at au lebih st at ement
      • – Termasuk percabangan (branching)

    • Kondisi dinyat akan sebagai ekspresi yang mengendalikan arah percabangan.
    • Pernyat aan yang digunakan disebut condit ional
    • Bagaimana jika menggunakan operat or
      • – Pernyat aa
      • – Pernyat aan sw it ch … case DEPARTEMEN ILMU KOMPUTER INSTITUT PERTANIAN BOGOR

    • Sint aks: (kondisi ? ekspr1 : ekspr2 )
      • – Jika kondisi bernilai benar, maka hasil evaluasi ekspresi t ersebut adalah ekspr1.
      • – Selainnya, hasil evaluasi ekspresi t ersebut adalah

    • Cont oh:

      increment / decrement lain (pre/ post )? DEPARTEMEN ILMU KOMPUTER INSTITUT PERTANIAN BOGOR

      at au

      if (kondisi) simple or compound statement;

      Bent uk umum:

      if (i < 10) n1 += 3; else n1 += 5; DEPARTEMEN ILMU KOMPUTER INSTITUT PERTANIAN Condit ional statement : if

      set ara dengan:

      ekspr2 .

      Ekspresi … ? ... : …

      st at ement:

      unt uk diproses at au t idak diproses berdasarkan kondisi t ert ent u.

      Select ion Cont rol St ruct ure

      Lat ihan #2 #include <stdio.h> int main() { int n; scanf("%d", &n); if (n++ = 0) printf("%d", n); return 0;

      } • Tent ukan input yang menghasilkan out put .

      i = i + 1; a[i] = i; DEPARTEMEN ILMU KOMPUTER INSTITUT PERTANIAN BOGOR

      i = ++i + 1; a[i++] = i;

      sat u variabel dalam sat u evaluasi

      Catatan

      DEPARTEMEN ILMU KOMPUTER INSTITUT adalah 9, dan nilai b setelahnya tetap 9 PERTANIAN BOGOR

      Nilai ekspresi adalah nilai sebelum dilakukan operasi increm ent/ decrem ent

      d--

      Nilai ekspresi adalah nilai setelah dilakukan operasi increm ent/ decrem ent

      ,

      Increment & Decrement

      if (kondisi) simple or compound statement; else simple or compound statement; DEPARTEMEN ILMU KOMPUTER INSTITUT

      Lat ihan #3 Condit ional statement : if

      Diagram alir unt uk Diagram alir unt uk if…….. if……..else……. #include <stdio.h> int main(){ int a, b; scanf("%d %d", &a, &b);

      FALSE k on d isi

      FALSE k on d isi ? if (a<b)

      ? printf("%d\n", b-a);

      TRUE printf("%d\n", a-b);

      TRUE return 0; st a t e m e n ts

      } st a t e m e n ts st a t e m e n ts

      Apa out put program jika diberi input 5 20 ?

    • 15 15
    • 15
    • KOMPUTER INSTITUT PERTANIAN BOGOR DEPARTEMEN ILMU

        Apa out put program jika diberi input 20 5 ? KOMPUTER INSTITUT PERTANIAN BOGOR DEPARTEMEN ILMU

        Lat ihan #5 Lat ihan #4

        #include <stdio.h> int main(){ int a, b;

        #include <stdio.h>

        scanf("%d %d", &a, &b);

        int main(){

        if (a<b) { printf("%d\n", b-a);

        int a, b;

        printf ("a lebih kecil");

        scanf("%d %d", &a, &b);

        }

        if (a<b) {

        else { printf("%d\n", a-b);

        printf("%d\n", b-a);

        printf ("a lebih besar");

        printf("%d\n", a-b);

        }

        }

        return 0; }

        return 0;

        1 5

        }

      • Out put program jika input 5 20:

        a lebih kecil

      • 1 5

        Apa out put program jika diberi input 20 5 ?

      • Out put program jika input 20 5:
      • KOMPUTER INSTITUT PERTANIAN BOGOR DEPARTEMEN ILMU

          a lebih besar KOMPUTER INSTITUT PERTANIAN BOGOR DEPARTEMEN ILMU

        Struktur else if :

          if(syarat) { Condit ional statement : Nested if

          …. perintah; …. perintah; } else if(syarat) { • St rukt ur seleksi if yang bercabang dengan banyak kondisi.

          …. perintah;

        • Cont oh, berapa nilai b jika diberikan input 12?

          …. perintah; } else if(syarat) scanf("%d", &a);

          { if (a<5)

          …. perintah; b = 1;

          …. perintah; } else if (a<10) else if(syarat) { else if (a<15)

          …. perintah; b = 3;

          …. perintah; } else else b = 4;

          { …. perintah; DEPARTEMEN ILMU …. perintah; KOMPUTER INSTITUT }

        • Struktur dengan banyak kondisi yang berbentuk ekspresi logika kesamaan nilai integer.
        • Perhatikan potongan program berikut (apa yang dilakukan?)

          kondisi dan konst_ekspr berjenis integer (short, int, long, long long) Condit ional statement : switch … case

          Berapa hasil evaluasi 4 * 4 + 4 * 4 + 4 – 4 * 4 ? PRECEDENCE

          Precedence dan Associat ivit y

          Cont oh program dengan swit ch….case….

          } return 0; } DEPARTEMEN ILMU KOMPUTER

          } DEPARTEMEN ILMU KOMPUTER INSTITUT PERTANIAN BOGOR #include <stdio.h> int main() { short int hari; printf("Isikan nomor hari (1 = Ahad s/d 7 = Sabtu): "); scanf("%hd", &hari); switch (hari) { case 1: case 7: printf("Akhir pekan!\n"); break; case 2: case 3: case 4: case 5: case 6: printf("Hari kerja!\n"); break; default: printf("Nomor hari tidak valid!\n"); break;

          int bil, hasil; scanf("%d", &bil); hasil = bil % 3; switch (hasil) { case 0: printf("NOL\n"); break; case 1: printf("SATU\n");break; default: printf("DUA\n"); break;

          M engubah if ke sw itch … case:

          } DEPARTEMEN ILMU KOMPUTER INSTITUT PERTANIAN BOGOR

          ... default: S5; S6; …; break;

          Bent uk um um st rukt ur sw it ch … case switch(kondisi){ case (konst_ekspr1): S1; S2; …; break; case (konst_ekspr2): S3; S4; …; break;

          Condit ional statement : switch … case

          int bil, hasil; scanf("%d", &bil); hasil = bil % 3; if (0 == hasil) printf("NOL\n"); else if (1 == hasil) printf("SATU\n"); else printf("DUA\n"); DEPARTEMEN ILMU KOMPUTER INSTITUT PERTANIAN BOGOR

          Condit ional statement : switch … case

          Bentuk Nested if dengan banyak perintah : { if(syarat) …. perintah; …. perintah; if(syarat) { …. perintah; …. perintah; } { else …. perintah; …. perintah; } } else { …. perintah; …. perintah; if(syarat) { …. perintah; …. perintah; } else { …. perintah; …. perintah; } }

        • M enent ukan urut an operasi dari operat or-operat or dalam ekspresi m ajem uk.
        • Operat or dengan t ingkat precedence lebih t inggi akan diproses lebih dahulu.

          ASSOCIATIVITY

        • M enent ukan arah evaluasi bila ada dua at au lebih operat or dengan t ingkat precedence yang sa
        • Dilam bangkan dengan left -t o-right (LR) at au right -t o-left (RL).
        • DEPARTEMEN ILMU KOMPUTER INSTITUT PERTANIAN

        Contoh Precedence dan Associativity

        • & + - ! ~ ++expr --expr (typecast) sizeof()
          • Y = 2 * 5 * 5 - 3 * 5 + 7;
          • Evaluasi:

        • / %
          • >> << < > <= >= == != & ^

          Air bersih LAYAK diminum jika memenuhi dua syarat , yait u kadar besi kurang dari p, dan kadar bakt eri coli kurang dari q. Jika t idak memenuhi kedua syarat t ersebut , air dikat akan TIDAK LAYAK unt uk diminum.

          DEPARTEMEN ILMU KOMPUTER INSTITUT PERTANIAN

          M isalkan t erdapat t iga variabel bert ipe int , yait u a= -15 , b= -10 , c= -5 .

          Lat ihan #8

          } DEPARTEMEN ILMU KOMPUTER INSTITUT PERTANIAN BOGOR //13 //10 //30 //10 //1 //1 //2 //2 //2 //3 //2 //2 //2 //1

          #include <stdio.h> int main() { int a = 10; printf("\n%d", a += 3); printf("\n%d", a -= 3); printf("\n%d", a *= 3); printf("\n%d", a /= 3); printf("\n%d", a %= 3); printf("\n%d", a); printf("\n%d", ++a); printf("\n%d", a); printf("\n%d", a++); printf("\n%d", a); printf("\n%d", --a); printf("\n%d", a); printf("\n%d", a--); printf("\n%d", a); return 0;

          Lat ihan #6

          Y = 2 * 5 * 5 - 3 * 5 + 7; = 10 * 5 - 3 * 5 + 7; = 50 - 3 * 5 + 7; = 50 - 15 + 7; = 35 + 7; = 42;

          Ternary Operator ?: right-to-left Assignment Operators = += -= *= /= %= >>= <<= &= ^= |= right-to-left Comma , left-to-right

          | && ||

          left-to-right

          right-to-left Binary Operators

          Ope ra t or Pre ce de nce Cha rt ( ht t p: / / w w w.sw ansont ec.com / sopc.ht m l) Operator Type Operator Associativity Primary Expression Operators () [] . -> expr++ expr-- left-to-right Unary Operators

        Lat ihan #7 - Out put program

        • Deskripsi:
        • Implement asi dalam program: if ((besi>p) && (coli>q)) printf("TIDAK LAYAK"); else printf("LAYAK");
        • Berapa nilai ekspresi a<b<c ? True/ False ?
        • Berapa nilai (++b + c--) ?