C# - Ściągawka dla Początkujących

Podstawowe elementy języka programowania C#

1. Zmienne

Co to jest?

Zmienna to pojemnik na dane. Przechowuje wartości, które możemy później użyć w programie.

Kiedy się stosuje?

Kiedy potrzebujesz przechować informacje i pracować z nimi w programie.

Przykład

using System;

class Program
{
    static void Main()
    {
        // Deklaracja zmiennych
        int wiek = 25;
        double wysokosc = 1.75;
        string imie = "Anna";
        bool jestStudentem = true;
        
        Console.WriteLine("Imię: " + imie);
        Console.WriteLine("Wiek: " + wiek);
        Console.WriteLine("Wysokość: " + wysokosc);
        Console.WriteLine("Student: " + jestStudentem);
    }
}
📝 Zadanie: Stwórz program, który deklaruje zmienne: ulubiony_owoc (string), liczba_jabltek (int), cena (double) i wyświetl je na ekranie.

2. Operatory Arytmetyczne

Co to jest?

Operatory to symbole używane do wykonywania operacji matematycznych na zmiennych.

Kiedy się stosuje?

Kiedy chcesz dodawać, odejmować, mnożyć, dzielić liczby.

Przykład

using System;

class Program
{
    static void Main()
    {
        int a = 10;
        int b = 3;
        
        Console.WriteLine("Dodawanie: " + (a + b));      // 13
        Console.WriteLine("Odejmowanie: " + (a - b));    // 7
        Console.WriteLine("Mnożenie: " + (a * b));       // 30
        Console.WriteLine("Dzielenie: " + (a / b));      // 3
        Console.WriteLine("Reszta z dzielenia: " + (a % b)); // 1
    }
}
📝 Zadanie: Stwórz program, który obliczy pole prostokąta o długości 5 i szerokości 3.

3. Warunki (if, else)

Co to jest?

Warunki pozwalają wykonywać różny kod w zależności od tego, czy warunek jest prawdziwy czy fałszywy.

Kiedy się stosuje?

Kiedy chcesz podejmować decyzje w programie (np. "jeśli wiek > 18, to...").

Przykład

using System;

class Program
{
    static void Main()
    {
        int wiek = 20;
        
        if (wiek >= 18)
        {
            Console.WriteLine("Jesteś pełnoletni");
        }
        else
        {
            Console.WriteLine("Jesteś niepełnoletni");
        }
        
        // Warunki złożone
        int ocena = 85;
        
        if (ocena >= 90)
            Console.WriteLine("Ocena: A");
        else if (ocena >= 80)
            Console.WriteLine("Ocena: B");
        else if (ocena >= 70)
            Console.WriteLine("Ocena: C");
        else
            Console.WriteLine("Ocena: F");
    }
}
📝 Zadanie: Stwórz program, który sprawdzi czy liczba jest parzysta czy nieparzysta.

4. Pętle (for, foreach)

Co to jest?

Pętla powtarza blok kodu wiele razy. Pozwala uniknąć pisania tego samego kodu wielokrotnie.

Kiedy się stosuje?

Kiedy musisz powtórzyć jakąś czynność wiele razy (np. wypisać liczby od 1 do 100).

Przykład

using System;

class Program
{
    static void Main()
    {
        // Pętla for
        Console.WriteLine("--- Pętla for ---");
        for (int i = 1; i <= 5; i++)
        {
            Console.WriteLine($"Liczba: {i}");
        }
        
        // Pętla foreach
        Console.WriteLine("\n--- Pętla foreach ---");
        int[] liczby = { 10, 20, 30, 40, 50 };
        foreach (int liczba in liczby)
        {
            Console.WriteLine($"Wartość: {liczba}");
        }
    }
}
📝 Zadanie: Stwórz program, który wypisze tabliczkę mnożenia dla liczby 7 (od 1 do 10).

5. Tablice (Arrays)

Co to jest?

Tablica to kolekcja wielu elementów tego samego typu przechowywanych pod jedną nazwą.

Kiedy się stosuje?

Kiedy chcesz przechować wiele wartości tego samego typu (np. oceny, imiona, liczby).

Przykład

using System;

class Program
{
    static void Main()
    {
        // Deklaracja tablicy
        int[] liczby = { 10, 20, 30, 40, 50 };
        
        Console.WriteLine("Pierwszy element: " + liczby[0]); // 10
        Console.WriteLine("Ostatni element: " + liczby[4]);  // 50
        
        // Iteracja przez tablicę
        Console.WriteLine("\nWszystkie liczby:");
        for (int i = 0; i < liczby.Length; i++)
        {
            Console.WriteLine(liczby[i]);
        }
        
        // Foreach
        Console.WriteLine("\nUsing foreach:");
        foreach (int liczba in liczby)
        {
            Console.WriteLine(liczba);
        }
    }
}
📝 Zadanie: Stwórz tablicę z 5 imionami i wypisz je wszystkie na ekranie.

6. Funkcje (Metody)

Co to jest?

Funkcja to blok kodu, który wykonuje konkretne zadanie. Możesz go używać wielokrotnie.

Kiedy się stosuje?

Kiedy chcesz podzielić program na mniejsze, logiczne części; gdy masz powtarzający się kod.

Przykład

using System;

class Program
{
    // Funkcja bez parametrów
    static void Pozdrowieni()
    {
        Console.WriteLine("Cześć!");
    }
    
    // Funkcja z parametrami
    static void Powitaj(string imie)
    {
        Console.WriteLine("Cześć " + imie + "!");
    }
    
    // Funkcja ze zwracaniem wartości
    static int Dodaj(int a, int b)
    {
        return a + b;
    }
    
    static void Main()
    {
        Pozdrowieni();
        Powitaj("Ania");
        
        int wynik = Dodaj(5, 3);
        Console.WriteLine("5 + 3 = " + wynik);
    }
}
📝 Zadanie: Stwórz funkcję o nazwie Zwiekszenie, która przyjmuje liczbę i zwraca ją powiększoną o 10.

7. Klasy i Obiekty

Co to jest?

Klasa to szablon do tworzenia obiektów. Obiekty zawierają dane (właściwości) i akcje (metody).

Kiedy się stosuje?

Kiedy chcesz organizować kod w logiczne grupy; gdy pracujesz z rzeczywistymi danymi (np. osoba, samochód).

Przykład

using System;

class Osoba
{
    // Właściwości
    public string imie;
    public int wiek;
    
    // Konstruktor
    public Osoba(string imie, int wiek)
    {
        this.imie = imie;
        this.wiek = wiek;
    }
    
    // Metoda
    public void Przedstaw()
    {
        Console.WriteLine("Jestem " + imie + " i mam " + wiek + " lat");
    }
}

class Program
{
    static void Main()
    {
        Osoba osoba1 = new Osoba("Maria", 25);
        osoba1.Przedstaw();
        
        Osoba osoba2 = new Osoba("Piotr", 30);
        osoba2.Przedstaw();
    }
}
📝 Zadanie: Stwórz klasę Samochod z właściwościami: marka, model, rok_produkcji. Dodaj metodę Informacje() wypisującą dane samochodu.

8. Dziedziczenie

Co to jest?

Dziedziczenie pozwala na tworzenie nowych klas na podstawie istniejących, dziedzicząc ich właściwości i metody.

Kiedy się stosuje?

Kiedy chcesz ponownie użyć kodu z klasy nadrzędnej; gdy chcesz tworzyć hierarchie obiektów.

Przykład

using System;

// Klasa bazowa
class Zwierzak
{
    public string imie;
    
    public Zwierzak(string imie)
    {
        this.imie = imie;
    }
    
    public void MakeSound()
    {
        Console.WriteLine(imie + " wydaje dźwięk");
    }
}

// Klasa pochodna
class Pies : Zwierzak
{
    public Pies(string imie) : base(imie)
    {
    }
    
    public void MakeSound()
    {
        Console.WriteLine(imie + " szczeka: Hau hau!");
    }
}

class Kot : Zwierzak
{
    public Kot(string imie) : base(imie)
    {
    }
    
    public void MakeSound()
    {
        Console.WriteLine(imie + " miauczy: Miau!");
    }
}

class Program
{
    static void Main()
    {
        Pies pies = new Pies("Rex");
        pies.MakeSound();
        
        Kot kot = new Kot("Mruczek");
        kot.MakeSound();
    }
}
📝 Zadanie: Stwórz klasę Pojazd z właściwością prędkość, następnie stwórz klasy Samochod i Rower dziedziczące po Pojazd.

9. Stringi (Napisy)

Co to jest?

String to sekwencja znaków (tekst). Jest jednym z najczęściej używanych typów danych.

Kiedy się stosuje?

Kiedy pracujesz z tekstem, nazwami, wiadomościami.

Przykład

using System;

class Program
{
    static void Main()
    {
        string tekst = "Cześć C#!";
        
        // Długość stringa
        Console.WriteLine($"Długość: {tekst.Length}");
        
        // Zamiana na wielkie litery
        Console.WriteLine(tekst.ToUpper());
        
        // Zamiana na małe litery
        Console.WriteLine(tekst.ToLower());
        
        // Podciąg
        Console.WriteLine(tekst.Substring(0, 6)); // "Cześć "
        
        // Zawieranie
        Console.WriteLine(tekst.Contains("C#")); // true
        
        // Zastępowanie
        Console.WriteLine(tekst.Replace("C#", "C Sharp"));
        
        // Interpolacja stringów
        string imie = "Anna";
        string wiadomosc = $"Cześć {imie}!";
        Console.WriteLine(wiadomosc);
    }
}
📝 Zadanie: Stwórz program, który pobierze od użytkownika imię i wypisze je wieloma wielkościami liter.

10. Słowniki (Dictionary)

Co to jest?

Słownik to kolekcja par klucz-wartość. Każdy klucz ma powiązaną wartość, którą możesz szybko wyszukać.

Kiedy się stosuje?

Kiedy chcesz przechować powiązane dane (np. numery telefonów przypisane do imion, ceny produktów).

Przykład

using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        // Tworzenie słownika
        Dictionary<string, int> oceny = new Dictionary<string, int>();
        
        // Dodawanie elementów
        oceny["Maria"] = 95;
        oceny["Piotr"] = 87;
        oceny["Anna"] = 92;
        
        // Dostęp do wartości
        Console.WriteLine($"Ocena Marii: {oceny["Maria"]}");
        
        // Iteracja przez słownik
        Console.WriteLine("\nWszystkie oceny:");
        foreach (var para in oceny)
        {
            Console.WriteLine($"{para.Key} - {para.Value}");
        }
        
        // Sprawdzenie czy klucz istnieje
        if (oceny.ContainsKey("Maria"))
        {
            Console.WriteLine("Maria jest w słowniku");
        }
        
        // Usunięcie elementu
        oceny.Remove("Piotr");
    }
}
📝 Zadanie: Stwórz słownik zawierający marki samochodów i ich ceny. Wypisze wszystkie marki i ceny.

11. Operacje na Konsoli (Input/Output)

Co to jest?

Operacje na konsoli to wypisywanie danych na ekranie (output) i odczytywanie danych od użytkownika (input).

Kiedy się stosuje?

Kiedy chcesz komunikować się z użytkownikiem - pokazywać mu informacje lub prosić go o wprowadzenie danych.

Przykład

using System;

class Program
{
    static void Main()
    {
        // Wypisywanie na konsoli
        Console.WriteLine("Cześć świecie!"); // Wypisz i przejdź do nowej linii
        Console.Write("To jest tekst bez nowej linii");
        Console.Write(" - ciąg dalszy\n"); // \n = nowa linia
        
        // Czytanie tekstu od użytkownika
        Console.WriteLine("\nWprowadź swoje imię:");
        string imie = Console.ReadLine();
        
        // Czytanie liczby całkowitej
        Console.WriteLine("Wprowadź swoją wiek:");
        int wiek = int.Parse(Console.ReadLine());
        
        // Czytanie liczby zmiennoprzecinkowej
        Console.WriteLine("Wprowadź wzrost (cm):");
        double wzrost = double.Parse(Console.ReadLine());
        
        // Wypisywanie zmiennych z interpolacją
        Console.WriteLine($"\nOto Twoje dane:");
        Console.WriteLine($"Imię: {imie}");
        Console.WriteLine($"Wiek: {wiek} lat");
        Console.WriteLine($"Wzrost: {wzrost} cm");
        
        // Bezpieczne czytanie liczby (TryParse)
        Console.WriteLine("\nWprowadź liczbę:");
        if (int.TryParse(Console.ReadLine(), out int liczba))
        {
            Console.WriteLine($"Liczba: {liczba}");
        }
        else
        {
            Console.WriteLine("To nie jest liczba!");
        }
    }
}
📝 Zadanie: Stwórz program, który poprosi użytkownika o podanie długości i szerokości prostokąta, a następnie obliczy i wypisze jego pole oraz obwód.

12. Operatory Logiczne

Co to jest?

Operatory logiczne łączą warunki aby sprawdzić wiele rzeczy na raz.

Kiedy się stosuje?

Kiedy potrzebujesz sprawdzić wiele warunków jednocześnie.

Przykład

using System;

class Program
{
    static void Main()
    {
        int wiek = 25;
        int ocena = 85;
        
        // AND (&&) - oba warunki muszą być prawdziwe
        if (wiek >= 18 && ocena >= 80)
        {
            Console.WriteLine("Możesz się zalogować i jesteś uczeń dobrze się uczący");
        }
        
        // OR (||) - przynajmniej jeden warunek musi być prawdziwy
        if (wiek < 13 || wiek > 65)
        {
            Console.WriteLine("Nie jesteś w wieku produkcyjnym");
        }
        
        // NOT (!) - negacja
        bool jestWłascicielem = false;
        if (!jestWłascicielem)
        {
            Console.WriteLine("Nie jesteś właścicielem");
        }
    }
}
📝 Zadanie: Stwórz program, który sprawdzi czy liczba jest między 10 a 50 (włącznie).

📚 Podsumowanie - Mapa typów zmiennych

int - liczby całkowite (-2147483648 do 2147483647)
double - liczby zmiennoprzecinkowe (większa precyzja)
float - liczby zmiennoprzecinkowe (mniejsza precyzja)
bool - wartości logiczne (true/false)
string - tekst
char - pojedynczy znak
decimal - duże liczby z precyzją (ceny)