Pertemuan 2 – NET Framework

Nama : Rafly Al Fahrezi
NRP : 5025241131
Kelas : PBKK-D

A. Uji Coba Hello World

1. Tujuan

  • Memahami struktur dasar program C# Console Application
  • Mengetahui cara menampilkan output ke layar console
  • Memahami cara menjalankan program pada framework .NET

2. Alat dan Bahan

  • Software: Visual Studio 2022 / VS Code
  • Framework: .NET Framework / .NET Core
  • Bahasa Pemrograman: C#

3. Dasar Teori

Hello World merupakan program paling sederhana yang biasanya digunakan sebagai langkah awal dalam mempelajari bahasa pemrograman baru. Program ini berfungsi untuk memastikan bahwa lingkungan pengembangan (development environment) telah terkonfigurasi dengan benar dan siap digunakan.

Pada C#, method Main adalah entry point utama dari sebuah aplikasi console. Setiap program C# harus memiliki method Main agar dapat dieksekusi. Untuk menampilkan output ke layar, digunakan perintah Console.WriteLine().

4. Langkah Kerja

  1. Buka Visual Studio atau VS Code
  2. Buat project baru dengan tipe Console App (.NET Framework / .NET Core)
  3. Beri nama project, misalnya HelloWorld
  4. Tuliskan kode program berikut:
using System;

namespace HelloWorld
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hello World!");
            Console.WriteLine("Selamat datang di Pemrograman C#");
            
            Console.ReadKey();
        }
    }
}
  1. Build project dengan menekan Ctrl + Shift + B
  2. Jalankan program dengan menekan F5 atau Ctrl + F5

5. Hasil Uji Coba

Output yang dihasilkan:

Penjelasan Kode:

Baris KodePenjelasan
using System;Mengimpor namespace System yang berisi class Console
namespace HelloWorldMendefinisikan namespace sebagai wadah class
class ProgramMendefinisikan class utama program
static void Main(string[] args)Method utama yang pertama kali dijalankan
Console.WriteLine()Menampilkan teks ke layar dan pindah baris
Console.ReadKey()Menahan jendela console agar tidak langsung tertutup

6. Kesimpulan

Program Hello World berhasil dijalankan dengan baik. Hal ini membuktikan bahwa:

  • Lingkungan pengembangan C# telah terinstal dengan benar
  • Struktur dasar program C# Console Application telah dipahami
  • Method Main berfungsi sebagai entry point aplikasi
  • Perintah Console.WriteLine() dapat menampilkan output ke layar

B. Uji Coba Sistem Data Mahasiswa

1. Tujuan

  • Menerapkan konsep Object Oriented Programming (OOP) dalam C#
  • Memahami penggunaan class, object, property, dan constructor
  • Menerapkan struktur data List untuk menyimpan banyak objek
  • Membuat aplikasi CRUD (Create, Read, Update, Delete) sederhana berbasis console
  • Menerapkan validasi input dan penanganan error sederhana

2. Alat dan Bahan

  • Software: Visual Studio 2022 / VS Code
  • Framework: .NET Framework / .NET Core
  • Bahasa Pemrograman: C#

3. Dasar Teori

a. Object Oriented Programming (OOP)

OOP adalah paradigma pemrograman yang menggunakan "objek" sebagai dasar utama. Konsep utama OOP meliputi:

  • Class: blueprint/cetakan untuk membuat objek
  • Object: instance dari class
  • Property: atribut yang dimiliki class
  • Constructor: method khusus yang dijalankan saat objek dibuat
  • Method: fungsi yang dimiliki class

b. Collection List

List<T> adalah struktur data generik di C# yang dapat menyimpan kumpulan objek dengan tipe tertentu. Berbeda dengan array, List memiliki ukuran dinamis (bisa bertambah/berkurang).

c. CRUD

CRUD adalah singkatan dari:

  • Create โ†’ Menambah data
  • Read โ†’ Menampilkan data
  • Update โ†’ Mengubah data
  • Delete โ†’ Menghapus data

4. Struktur Program

Program Sistem Data Mahasiswa terdiri dari 2 class utama:

DataMahasiswa (namespace)
โ”‚
โ”œโ”€โ”€ class Mahasiswa
โ”‚   โ”œโ”€โ”€ Property: NIM, Nama, Prodi, IPK
โ”‚   โ””โ”€โ”€ Constructor: Mahasiswa(nim, nama, prodi, ipk)
โ”‚
โ””โ”€โ”€ class Program
    โ”œโ”€โ”€ List<Mahasiswa> daftarMahasiswa
    โ”œโ”€โ”€ Main()
    โ”œโ”€โ”€ TampilkanMenu()
    โ”œโ”€โ”€ TambahMahasiswa()
    โ”œโ”€โ”€ TampilkanMahasiswa()
    โ”œโ”€โ”€ CariMahasiswa()
    โ””โ”€โ”€ HapusMahasiswa()

5. Kode Program Lengkap

using System;
using System.Collections.Generic;

namespace DataMahasiswa
{
    // Class untuk merepresentasikan data mahasiswa
    class Mahasiswa
    {
        public string NIM { get; set; }
        public string Nama { get; set; }
        public string Prodi { get; set; }
        public double IPK { get; set; }

        // Constructor
        public Mahasiswa(string nim, string nama, string prodi, double ipk)
        {
            NIM = nim;
            Nama = nama;
            Prodi = prodi;
            IPK = ipk;
        }
    }

    class Program
    {
        // List untuk menyimpan data mahasiswa
        static List<Mahasiswa> daftarMahasiswa = new List<Mahasiswa>();

        static void Main(string[] args)
        {
            int pilihan;
            do
            {
                TampilkanMenu();
                Console.Write("Pilihan: ");
                string input = Console.ReadLine();

                if (!int.TryParse(input, out pilihan))
                {
                    pilihan = 0;
                }

                Console.WriteLine();

                switch (pilihan)
                {
                    case 1: TambahMahasiswa(); break;
                    case 2: TampilkanMahasiswa(); break;
                    case 3: CariMahasiswa(); break;
                    case 4: HapusMahasiswa(); break;
                    case 5:
                        Console.WriteLine("Terima kasih telah menggunakan program.");
                        break;
                    default:
                        Console.WriteLine("Pilihan tidak tersedia!");
                        break;
                }

                if (pilihan != 5)
                {
                    Console.WriteLine();
                    Console.WriteLine("Tekan ENTER untuk melanjutkan...");
                    Console.ReadLine();
                }

            } while (pilihan != 5);
        }

        // METHOD MENAMPILKAN MENU
        static void TampilkanMenu()
        {
            Console.Clear();
            Console.WriteLine("==================================================");
            Console.WriteLine("           SISTEM DATA MAHASISWA");
            Console.WriteLine("==================================================");
            Console.WriteLine("1. Tambah Mahasiswa");
            Console.WriteLine("2. Tampilkan Mahasiswa");
            Console.WriteLine("3. Cari Mahasiswa");
            Console.WriteLine("4. Hapus Mahasiswa");
            Console.WriteLine("5. Keluar");
            Console.WriteLine("==================================================");
        }

        // METHOD TAMBAH MAHASISWA
        static void TambahMahasiswa()
        {
            Console.Clear();
            Console.WriteLine("==================================================");
            Console.WriteLine("              TAMBAH MAHASISWA");
            Console.WriteLine("==================================================");

            Console.Write("NIM : ");
            string nim = Console.ReadLine();

            Console.Write("Nama : ");
            string nama = Console.ReadLine();

            Console.Write("Program Studi : ");
            string prodi = Console.ReadLine();

            double ipk;
            while (true)
            {
                Console.Write("IPK : ");
                if (double.TryParse(Console.ReadLine(), out ipk))
                {
                    if (ipk >= 0 && ipk <= 4)
                    {
                        break;
                    }
                }
                Console.WriteLine("IPK harus berupa angka 0 - 4.");
            }

            Mahasiswa mahasiswa = new Mahasiswa(nim, nama, prodi, ipk);
            daftarMahasiswa.Add(mahasiswa);

            Console.WriteLine();
            Console.WriteLine("Data mahasiswa berhasil ditambahkan.");
        }

        // METHOD MENAMPILKAN DATA
        static void TampilkanMahasiswa()
        {
            Console.Clear();
            Console.WriteLine("==================================================");
            Console.WriteLine("              DAFTAR MAHASISWA");
            Console.WriteLine("==================================================");

            if (daftarMahasiswa.Count == 0)
            {
                Console.WriteLine("Belum ada data mahasiswa.");
                return;
            }

            Console.WriteLine("{0,-12}{1,-20}{2,-20}{3,5}", "NIM", "Nama", "Prodi", "IPK");
            Console.WriteLine("--------------------------------------------------");

            foreach (Mahasiswa m in daftarMahasiswa)
            {
                Console.WriteLine("{0,-12}{1,-20}{2,-20}{3,5:F2}",
                    m.NIM, m.Nama, m.Prodi, m.IPK);
            }

            Console.WriteLine("==================================================");
        }

        // METHOD MENCARI MAHASISWA
        static void CariMahasiswa()
        {
            Console.Clear();
            Console.WriteLine("==================================================");
            Console.WriteLine("              CARI MAHASISWA");
            Console.WriteLine("==================================================");

            Console.Write("Masukkan NIM: ");
            string nimCari = Console.ReadLine();

            Mahasiswa mahasiswaDitemukan = null;

            foreach (Mahasiswa m in daftarMahasiswa)
            {
                if (m.NIM.Equals(nimCari, StringComparison.OrdinalIgnoreCase))
                {
                    mahasiswaDitemukan = m;
                    break;
                }
            }

            Console.WriteLine();

            if (mahasiswaDitemukan != null)
            {
                Console.WriteLine("Data ditemukan!");
                Console.WriteLine("NIM   : " + mahasiswaDitemukan.NIM);
                Console.WriteLine("Nama  : " + mahasiswaDitemukan.Nama);
                Console.WriteLine("Prodi : " + mahasiswaDitemukan.Prodi);
                Console.WriteLine("IPK   : " + mahasiswaDitemukan.IPK.ToString("F2"));
            }
            else
            {
                Console.WriteLine("Mahasiswa dengan NIM tersebut tidak ditemukan.");
            }
        }

        // METHOD MENGHAPUS MAHASISWA
        static void HapusMahasiswa()
        {
            Console.Clear();
            Console.WriteLine("==================================================");
            Console.WriteLine("              HAPUS MAHASISWA");
            Console.WriteLine("==================================================");

            Console.Write("Masukkan NIM: ");
            string nimHapus = Console.ReadLine();

            Mahasiswa mahasiswaDitemukan = null;

            foreach (Mahasiswa m in daftarMahasiswa)
            {
                if (m.NIM.Equals(nimHapus, StringComparison.OrdinalIgnoreCase))
                {
                    mahasiswaDitemukan = m;
                    break;
                }
            }

            if (mahasiswaDitemukan != null)
            {
                daftarMahasiswa.Remove(mahasiswaDitemukan);
                Console.WriteLine();
                Console.WriteLine("Data mahasiswa berhasil dihapus.");
            }
            else
            {
                Console.WriteLine();
                Console.WriteLine("Data mahasiswa tidak ditemukan.");
            }
        }
    }
}

6. Hasil Uji Coba

a. Tampilan Menu Utama

b. Uji Coba Tambah Mahasiswa (Create)

Input:

Analisis: Data mahasiswa berhasil ditambahkan ke dalam List. Validasi IPK berjalan dengan baik โ€” ketika user memasukkan nilai di luar 0-4, program akan meminta input ulang.

c. Uji Coba Tampilkan Mahasiswa (Read)

Input:

Pilihan: 2

Output:

Analisis: Data berhasil ditampilkan dalam bentuk tabel dengan format alignment yang rapi menggunakan format string {0,-12} dan {3,5:F2}.

d. Uji Coba Cari Mahasiswa (Search)

Input:

Pilihan: 3
Masukkan NIM: 5025241131

Output:

Analisis: Pencarian menggunakan StringComparison.OrdinalIgnoreCase sehingga pencarian tidak case-sensitive. Jika NIM tidak ditemukan, akan muncul pesan "Mahasiswa dengan NIM tersebut tidak ditemukan."

e. Uji Coba Hapus Mahasiswa (Delete)

Input:

Pilihan: 4
Masukkan NIM: 5025241131

Output:

Analisis: Data dengan NIM 5025241131 berhasil dihapus dari List. Jika NIM tidak ditemukan, akan muncul pesan "Data mahasiswa tidak ditemukan."

f. Uji Coba Keluar Program

Input:

Pilihan: 5

Output:

Analisis: Program berhenti dengan benar karena kondisi while (pilihan != 5) bernilai false.

7. Tabel Pengujian

NoSkenarioInputOutput yang DiharapkanStatus
1Tambah mahasiswa dengan data validNIM, Nama, Prodi, IPK validData berhasil ditambahkanBerhasil
2Tambah mahasiswa dengan IPK > 4IPK = 5Error "IPK harus 0-4"Berhasil
3Tambah mahasiswa dengan IPK negatifIPK = -1Error "IPK harus 0-4"Berhasil
4Tambah mahasiswa dengan IPK non-angkaIPK = "abc"Error "IPK harus 0-4"Berhasil
5Tampilkan data saat kosongPilihan 2"Belum ada data mahasiswa"Berhasil
6Cari NIM yang adaNIM validData ditemukanBerhasil
7Cari NIM yang tidak adaNIM invalidData tidak ditemukanBerhasil
8Hapus NIM yang adaNIM validData berhasil dihapusBerhasil
9Hapus NIM yang tidak adaNIM invalidData tidak ditemukanBerhasil
10Input pilihan non-angka"abc""Pilihan tidak tersedia!"Berhasil

8. Analisis Kode

a. Penggunaan Class dan Object

Class Mahasiswa berfungsi sebagai blueprint untuk membuat objek mahasiswa dengan 4 property: NIM, Nama, Prodi, dan IPK. Constructor digunakan untuk menginisialisasi nilai property saat objek dibuat.

b. Penggunaan List<Mahasiswa>

List<Mahasiswa> digunakan sebagai penyimpanan data dinamis. List dipilih karena ukurannya dapat bertambah/berkurang secara otomatis sesuai kebutuhan, berbeda dengan array yang memiliki ukuran tetap.

c. Validasi Input

  • int.TryParse() โ†’ memvalidasi input pilihan menu agar hanya menerima angka
  • double.TryParse() โ†’ memvalidasi input IPK agar hanya menerima angka desimal
  • Range check ipk >= 0 && ipk <= 4 โ†’ memastikan IPK dalam rentang valid

d. Struktur Perulangan

  • do-while pada Main() โ†’ memastikan menu ditampilkan minimal sekali dan terus berulang sampai user memilih keluar
  • while(true) pada validasi IPK โ†’ terus meminta input sampai user memasukkan nilai yang valid
  • foreach โ†’ digunakan untuk iterasi List pada method Tampilkan, Cari, dan Hapus

e. Format Output Tabel

Format string {0,-12}{1,-20}{2,-20}{3,5:F2} digunakan untuk membuat tampilan tabel rapi:

  • -12 โ†’ rata kiri dengan lebar 12 karakter
  • -20 โ†’ rata kiri dengan lebar 20 karakter
  • 5:F2 โ†’ rata kanan lebar 5 dengan 2 angka desimal

9. Kesimpulan

Berdasarkan hasil uji coba, dapat disimpulkan bahwa:

  1. Program berhasil dibuat menggunakan bahasa C# dengan menerapkan konsep Object Oriented Programming (class, object, property, constructor, method).
  2. Semua fitur CRUD berjalan dengan baik โ€” Create (Tambah), Read (Tampilkan), Search (Cari), dan Delete (Hapus).
  3. Validasi input berjalan optimal โ€” program mampu menangani input yang salah (non-angka, IPK di luar rentang 0-4) tanpa crash.
  4. Struktur data List terbukti efektif untuk menyimpan data dinamis yang jumlahnya tidak tentu.
  5. Program bersifat interaktif dengan menu navigasi yang user-friendly dan tampilan tabel yang rapi.
  6. Semua skenario pengujian (10 kasus) berhasil sesuai dengan output yang diharapkan.

10. Saran Pengembangan

Untuk pengembangan lebih lanjut, program ini dapat ditingkatkan dengan:

  • Menambahkan fitur Edit/Update data mahasiswa
  • Menyimpan data ke file (txt/csv) atau database agar data tidak hilang saat program ditutup
  • Menambahkan fitur sorting berdasarkan NIM, Nama, atau IPK
  • Menambahkan login admin untuk keamanan
  • Mengembangkan ke aplikasi berbasis GUI (Windows Forms / WPF) atau Web (ASP.NET)

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *