---
# System prepended metadata

title: Tugas Pendahuluan - Introduction to C

---

# Tugas Pendahuluan - Introduction to C

```
Nama  : Abdallah Raffael Omari
NPM   : 2306247446
```

> Note: Soal Programming tidak perlu dicantumkan referensi, hanya soal Teori saja yang perlu referensi minimal 2.

## Teori

### 1. Sebutkan dan jelaskan minimal 10 tipe data dalam bahasa C! (10 poin)

---

**1. Integer**
Tipe data integer digunakan untuk data - data angka pada bilangan bulat tanpa pecahan ataupun desimal. Tipe data integer dapat bernilai positif maupun negatif.

*Contoh :
bilangan 1, 3, 7, 158, 256, etc.*

**2. Float**
Tipe data untuk data - data angka bilangan riil yang mengandung desimal. Bilangan desimal dituliskan dengan titik (.)

*Contoh :
bilangan 15.65, 3.14, 1945.654, etc.*

**3. Double**
Tipe data **Double** digunakan untuk data yang memiliki bilangan desimal dengan angka desimal dibelakang koma yang membedakan dengan tipe data **Float**. Pada tipe **Float** terdapat 7 angka maksimal dibelakang koma, namun pada tipe **Double** mampu terdapat 15 angka dibelakang koma.

*Contoh : 
bilangan 98.654378987634526, 82.123567489736, etc.*

**4. Boolean**
Tipe data yang memiliki 2 pilihan berupa ***True*** dan ***False***. Dimana pada tipe ini digunakan sebagai representasi dua nilai tersebut dengan ***True*** (selain 0) dan ***False*** (0).

**5. Char**
Merupakan tipe data yang menyimpan satu karakter dimana penulisannya diapit oleh tanda petik tunggal ('....'). 

*Contoh : 
'A', 'Y', 'V', etc.*

**6. String**
Digunakan untuk menyimpan data karakter yang berupa teks. Dibedakan dengan tipe data **Char** dengan penggunaan tanda petik ganda dan string tidak dibatasi satu karakter.

*Contoh :
"Abdallah Raffael Omari", "Ramai lancar".*

**7. Void**
Memiliki arti tanpa nilai. Dimana tipe data void digunakan pada fungsi yang tidak mengembalikan nilai.

**8. Wide_character**
Tipe data dengan karakter lebar, memiliki ukuran yang lebih besar dari tipe data 8-bit normal dengan panjang umum berupa 2 atau 4 bit.

**9. Varchar**
Merupakan data yang berupa variable. Dengan n untuk menentukan ukurarn string dalam bit, dapat berupa nilai 1 - 8000, atau dengan menggunakan max untuk ukuran batasan kolom hingga penyimpanan maksimum.

**10. Array**
Tipe data yang digunakan untuk menyimpan kumpulan nilai dengan tipe data yang sama dalam satu struktur. **Indeks array** adalah nilai untuk mengakses elemen tertentu pada suatu array. Bertipe data **integer** atau tipe data lainnya yang direpresentasikan sebagai bilangan bulat.
### Referensi:

- [1]pusti kosmos, “Tipe Data : Penjelasan Lengkap dan Fungsinya dalam Pemrograman,” D3 Rekayasa Perangkat Lunak Aplikasi, 2024. https://dif.telkomuniversity.ac.id/tipe-data-pemrograman/
‌
- [1]M. M. Syahidin, “Mengenal Jenis-jenis Tipe Data dalam Bahasa C++ | Jurnal MMS,” Sep. 27, 2019. https://jurnalmms.web.id/cpluscplus/tipe-data-dalam-cplusplus/. Accessed: Feb. 10, 2025.

- [1]“Struktur Data,” 2017. [Online]. Available: https://eprints.uty.ac.id/8867/1/MODUL_PRAK_Struktur%20Data.pdf. Accessed: Feb. 10, 2025.
‌
‌- [1]MikeRayMSFT, “char and varchar (Transact-SQL) - SQL Server,” learn.microsoft.com. https://learn.microsoft.com/en-us/sql/t-sql/data-types/char-and-varchar-transact-sql?view=sql-server-ver16. Accessed: Feb. 10, 2025.
‌
‌

---

### 2. Jelaskan apa yang dimaksud dengan #include <math.h> dalam bahasa C! (10 poin)

Dalam bahasa C, #include <math.h> digunakan untuk menyertakan header file <math.h> dalam program. Header ini mendeklarasikan fungsi matematika standar yang digunakan untuk melakukan operasi perhitungan seperti logaritma, eksponensial, trigonometri, etc. Dengan menerima argumen bertipa **Double**.



### Referensi:

- [1]“C Library math.h Functions,” GeeksforGeeks, Jun. 01, 2017. https://www.geeksforgeeks.org/c-library-math-h-functions/
‌[Diakses: 10-Februari-2025]

---

### 3. Jelaskan perbedaan antara for, while, dan do-while loop! (10 poin)

**1. For Loop**
Digunakan ketika diketahui jumlah iterasi sebelum memulai repetisi. Memungkinkan untuk mengontrol sehingga dapat melakukan n langkah dalam satu baris.

**2. While Loop**
Pada **For** loop jumlah iterasi sudah diketahui, yaitu jumlah n loop yang ingin dieksekusi. **While** loop digunakan pada situasi ketika jumlah iterasi tidak diketahui secara pasti. Loop ini dikontrol dan diberhentikan berdasarkan kondisi pengujian.r

**3. Do-While Loop**
Perbedaan utama dengan **While** loop adalah pada kondisi akhir perulangan dimana pada **Do-While** loop dikontrol keluar sedangkan dua perulangan lainnya dikontrol masuk. Pada loop ini, badan perulangan akan dieksekusi minimum satu kali terlepas dari kondisi pengujiannya.

### Referensi:

- [1]GeeksforGeeks, “C++ Loops,” GeeksforGeeks, Jan. 13, 2017. https://www.geeksforgeeks.org/cpp-loops/
‌[Diakses: 10-Februari-2025]


### 4. Jelaskan apa yang menyebabkan terjadinya infinite loop? Hal ini dapat terjadi pada jenis looping statement apa saja? (10 poin)

**Infinite Loop** terjadi ketika iterasi tidak pernah bernilai salah dan badan pengulangan dieksekusi secara berulang terus - menerus. Program tersebut akan berulang tak terbatas selama kondisinya bersifat benar. Biasanya dapat diatasi dengan *Loop Control Statements*. Kejadian ini dapat terjadi pada seluruh statement loop.

### Referensi:

- [1]“C - Loops,” GeeksforGeeks, Oct. 08, 2022. https://www.geeksforgeeks.org/c-loops/
‌[Diakses: 10-Februari-2025]
---

## Programming

### 1. Buatlah program yang menampilkan output berupa teks "Hello [Nama Anda]!" dalam bahasa C! Cantumkan kode program dan screenshot hasil outputnya! (20 poin)

---

```c
#include <stdio.h>

int main(){
    printf("Hello Raffael!")
    return 0;
}
```
![image](https://hackmd.io/_uploads/S1m-ocvY1g.png)


### 2. Himpunan A berisi bilangan 1 - 50 (inklusif) yang habis dibagi 3 dan 5. Dengan **WHILE** loop, buatlah program yang akan print semua elemen dari A, tetapi skip 5 bilangan pertama dari A! Cantumkan kode program dan screenshot hasil outputnya! (20 poin)

---

```c
#include <stdio.h>

int main() {
    int n = 1, count = 0;

    // Menggunakan while loop untuk mengevaluasi bilangan dari 1 hingga 50
    while (n <= 50) {
        // Mengecek apakah bilangan habis dibagi 3 dan 5
        if (n % 3 == 0 && n % 5 == 0) {
            if (count >= 5) {
                printf("%d\n", n);  // Cetak bilangan ke layar
            }
            count++;  // Increment jumlah bilangan yang ditemukan
        }
        n++;  // Increment nilai i
    }

    return 0;
}

```

![image](https://hackmd.io/_uploads/HJaTziDK1g.png)


### 3. Alien-Drawing? (20 poin)

> Hint: Gunakan for loop.

Buatlah program yang akan menampilkan output suatu shape dengan panjang yang ditentukan oleh user. Program akan menerima input panjang dari user, kemudian program akan menampilkan sebuah shape dengan panjang tersebut. Contoh output program adalah sebagai berikut:

Test Case 1:  
Input:
```bash
1
```

Output:
```bash
*
```

Test Case 2:  
Input:
```bash
2
```

Output:
```bash
 *
* *
 *
```

Test Case 3:  
Input:
```bash
3
```

Output:
```bash
  *
 * *
*  *
 * *
  *
```

Test Case 4:  
Input:
```bash
6
```

Output:
```bash
     *
    * *
   *  *
  *   *
 *    *
*     *
 *    *
  *   *
   *  *
    * *
     *
```

---

```c
#include <stdio.h>

int main() {
    int n;

    // Meminta input panjang dari user
    printf("Masukkan panjang shape: ");
    scanf("%d", &n);

    // Bagian atas shape
    for (int i = 0; i < n; i++) {
        // Spasi awal untuk membentuk segitiga simetris
        for (int j = 0; j < n - i - 1; j++) {
            printf(" ");
        }
        // Bintang pertama
        printf("*");

        // Spasi di antara dua bintang (jika ada lebih dari satu baris)
        if (i > 0) {
            for (int j = 0; j < 2 * i - 1; j++) {
                printf(" ");
            }
            printf("*");
        }
        printf("\n");
    }

    // Bagian bawah shape
    for (int i = n - 2; i >= 0; i--) {
        // Spasi awal untuk membentuk segitiga simetris
        for (int j = 0; j < n - i - 1; j++) {
            printf(" ");
        }
        // Bintang pertama
        printf("*");

        // Spasi di antara dua bintang (jika ada lebih dari satu baris)
        if (i > 0) {
            for (int j = 0; j < 2 * i - 1; j++) {
                printf(" ");
            }
            printf("*");
        }
        printf("\n");
    }

    return 0;
}

```

![image](https://hackmd.io/_uploads/H1XwziDtye.png)
